`
xiangdefei
  • 浏览: 57508 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

httpclient(转)

阅读更多
HttpClient是一个模拟HTTP请求的工具类.
对HttpClient进行了一个简单的封装:
import static org.apache.commons.httpclient.params.HttpMethodParams.SO_TIMEOUT;  
  
import java.util.Map;  
import java.util.Map.Entry;  
  
import org.apache.commons.httpclient.Header;  
import org.apache.commons.httpclient.HttpClient;  
import org.apache.commons.httpclient.HttpStatus;  
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;  
import org.apache.commons.httpclient.methods.PostMethod;  
import org.apache.commons.httpclient.params.HttpMethodParams;  
  
/** 
 * HTTP 工具类. 
 *  
 * @author tengfei.fangtf 
 *  
 */  
public class HttpUtil {  
  
    /** 
     * 默认编码为 GB2312 
     */  
    private static final String HTTP_CONTENT_CHARSET = "gb2312";  
  
    private static TalaLogger log = TalaLogger.getLogger();  
  
    public static final Integer MAX_TIME_OUT = 5000;  
    public static final Integer MAX_IDLE_TIME_OUT = 60000;  
    public static final Integer MAX_CONN = 100;  
  
    public static HttpClient httpClient = null;  
  
    static {  
        MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();  
        connectionManager.closeIdleConnections(MAX_IDLE_TIME_OUT);  
        connectionManager.getParams().setParameter(  
                "http.connection-manager.max-total", MAX_CONN);  
        httpClient = new HttpClient(connectionManager);  
        httpClient.getParams().setParameter(SO_TIMEOUT,  
                MAX_TIME_OUT);  
        httpClient.getParams().setParameter("http.connection.timeout",  
                MAX_TIME_OUT);  
        httpClient.getParams().setParameter("http.connection-manager.timeout",  
                MAX_TIME_OUT.longValue());  
    }  
  
    /** 
     * 发送HTTP请求 
     *  
     * @param url 
     * @param param 
     * @return HTTP响应 
     */  
    public static String sendSimplePostRequest(String url,  
            Map<String, Object> param) {  
        // HTTP方法,还有get,head,put,delete,connect,options(询问可用的选项)  
        PostMethod post = new PostMethod(url);  
        post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,  
                HTTP_CONTENT_CHARSET);  
        if (param != null) {  
            for (Entry<String, Object> entry : param.entrySet()) {  
                // 排除掉空值  
                if (entry.getValue() != null) {  
                    post.addParameter(entry.getKey(), entry.getValue()  
                            .toString());  
                }  
            }  
        }  
        try {  
            post.addRequestHeader(new Header("Connection", "close"));  
            // post.addRequestHeader("Cookie", "ID=1"); //添加Cookie  
            httpClient.executeMethod(post);  
            if (post.getStatusCode() == HttpStatus.SC_OK) {  
                return post.getResponseBodyAsString();  
            } else {  
                post.abort();//马上断开连接  
                log.error("Http Comunication error ! code --> "  
                        + post.getStatusCode(), null);  
            }  
        } catch (Exception e) {  
            log  
                    .error("Http post occur error!url=" + url + ",param="  
                            + param, e);  
        } finally {  
            post.releaseConnection();  
        }  
        return null;  
    }  
  
}  

依赖jakarta.commons.httpclient-3.1.jar
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics