Package org.pasif.client.http

Source Code of org.pasif.client.http.HttpSendClient

package org.pasif.client.http;

import java.io.File;
import java.io.IOException;
import java.net.Socket;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.entity.FileEntity;
import org.apache.http.impl.DefaultConnectionReuseStrategy;
import org.apache.http.impl.DefaultHttpClientConnection;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.BasicHttpProcessor;
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.HttpRequestExecutor;
import org.apache.http.protocol.RequestConnControl;
import org.apache.http.protocol.RequestContent;
import org.apache.http.protocol.RequestExpectContinue;
import org.apache.http.protocol.RequestTargetHost;
import org.apache.http.protocol.RequestUserAgent;
import org.pas.log.LogHandlerImpl;

public class HttpSendClient {

    private String host;
    private int port;
    private LogHandlerImpl log;

    public HttpSendClient(String host, int port, LogHandlerImpl log) {
        this.host = host;
        this.port = port;
        this.log = log;
    }

    public void send(String folder, String file) {

        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, "UTF-8");
        HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");
        HttpProtocolParams.setUseExpectContinue(params, true);

        BasicHttpProcessor httpproc = new BasicHttpProcessor();
        // Required protocol interceptors
        httpproc.addInterceptor(new RequestContent());
        httpproc.addInterceptor(new RequestTargetHost());
        // Recommended protocol interceptors
        httpproc.addInterceptor(new RequestConnControl());
        httpproc.addInterceptor(new RequestUserAgent());
        httpproc.addInterceptor(new RequestExpectContinue());

        HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
        BasicHttpContext context = new BasicHttpContext(null);
        HttpHost httpHost = new HttpHost(host, port);
        DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
        DefaultConnectionReuseStrategy connStrategy = new DefaultConnectionReuseStrategy();

        context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
        context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, httpHost);
        FileEntity fileEntity = null;
        if (!file.equals("--end--")) {
            log.info("开始传输文件:" + file, true);
            fileEntity = new FileEntity(new File(folder + file), "UTF-8");
            try {
                if (!conn.isOpen()) {
                    Socket socket = new Socket(httpHost.getHostName(), httpHost.getPort());
                    conn.bind(socket, params);
                }
                BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", file);
                request.setEntity(fileEntity);
                context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
                request.setParams(params);
                httpexecutor.preProcess(request, httpproc, context);
                HttpResponse response = httpexecutor.execute(request, conn, context);
                if (!connStrategy.keepAlive(response, context)) {
                    conn.close();
                }
            } catch (Exception e) {
                log.error(e.getMessage(), true);
            } finally {
                try {
                    conn.close();
                } catch (Exception e) {
                    log.error(e.getMessage(), true);
                }
                log.info("传输文件:" + file + "完毕。", true);
            }
        } else {
            File f = new File("end");
            try {
                f.createNewFile();
                fileEntity = new FileEntity(f, "UTF-8");
            } catch (IOException ex) {
            }
            try {
                if (!conn.isOpen()) {
                    Socket socket = new Socket(httpHost.getHostName(), httpHost.getPort());
                    conn.bind(socket, params);
                }
                BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", file);
                request.setEntity(fileEntity);
                context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
                request.setParams(params);
                httpexecutor.preProcess(request, httpproc, context);
                HttpResponse response = httpexecutor.execute(request, conn, context);
                if (!connStrategy.keepAlive(response, context)) {
                    conn.close();
                }
            } catch (Exception e) {
                log.error(e.getMessage(), true);
            } finally {
                try {
                    conn.close();
                } catch (Exception e) {
                    log.error(e.getMessage(), true);
                }
            }
            f.delete();
        }
    }
}
TOP

Related Classes of org.pasif.client.http.HttpSendClient

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.