com.net.plus.common.http.transport.AbstractHttpClientTransport.java Source code

Java tutorial

Introduction

Here is the source code for com.net.plus.common.http.transport.AbstractHttpClientTransport.java

Source

/*
 * @(#)AbstractHttpClientTransport.java 2013-7-12
 * Copyright 2008 Client Service International, Inc. All rights reserved.
 * CSII PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.net.plus.common.http.transport;

import java.net.URI;

import org.apache.http.HttpHost;
import org.apache.http.client.HttpClient;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.conn.params.ConnRoutePNames;
import org.springframework.util.StringUtils;

import com.net.plus.common.http.connmgmt.HttpConnectionManager;

/**
 * AbstractHttpClientTransport.java
 * 
 * <p>
 * Created on 2013-7-12 Modification history
 * <p>
 *
 * @author yixx
 * @version 1.0
 * @since 1.0
 */
public abstract class AbstractHttpClientTransport<T> implements Transport {

    private boolean isProxy = Boolean.FALSE;//??
    private String proxyHost;//?
    private int proxyPort;//??

    private String protocol;//??
    private String host;//?IP??
    private int port = -1;//?
    private String target;//?
    private String queryString;//?

    private int connTimeout = 80000;//
    private int soTimeout = 80000;//?

    private String url;

    public Object submit(Object data) throws Exception {
        HttpClient httpClient = init();
        preSend(data);
        Object obj = send(httpClient, data);
        aftSend(obj);
        return obj;
    }

    public HttpClient init() {
        HttpClient httpClient = HttpConnectionManager.getHttpClient();
        httpClient.getParams().setParameter("http.connection.timeout", this.connTimeout);
        httpClient.getParams().setParameter("http.socket.timeout", this.soTimeout);
        if (isProxy) {
            HttpHost proxy = new HttpHost(proxyHost, proxyPort, "http");
            httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

        }
        return httpClient;
    }

    public void preSend(Object data) {

    }

    public abstract T send(HttpClient httpClient, Object obj);

    public void aftSend(Object data) {

    }

    public URI getSendUrl() {
        try {
            if (StringUtils.hasText(url)) {
                return new URIBuilder(url).build();
            }
            URIBuilder builder = new URIBuilder();
            if (StringUtils.hasText(protocol)) {
                builder.setScheme(protocol);
            }
            if (StringUtils.hasText(host)) {
                builder.setHost(host);
            }
            if (port != -1) {
                builder.setPort(port);
            }
            if (StringUtils.hasText(target)) {
                builder.setPath(target);
            }
            if (StringUtils.hasText(queryString)) {
                builder.setQuery(queryString);
            }
            return builder.build();
        } catch (Exception e) {
            return null;
        }
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public boolean isProxy() {
        return isProxy;
    }

    public void setProxyHost(String proxyHost) {
        this.proxyHost = proxyHost;
    }

    public void setProxyPort(int proxyPort) {
        this.proxyPort = proxyPort;
    }

    public void setProtocol(String protocol) {
        this.protocol = protocol;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public void setTarget(String target) {
        this.target = target;
    }

    public void setQueryString(String queryString) {
        this.queryString = queryString;
    }

    public int getConnTimeout() {
        return connTimeout;
    }

    public void setConnTimeout(int connTimeout) {
        this.connTimeout = connTimeout;
    }

    public int getSoTimeout() {
        return soTimeout;
    }

    public void setSoTimeout(int soTimeout) {
        this.soTimeout = soTimeout;
    }

}