HttpClient
HttpClient是一个模拟HTTP请求的工具类,目前我们在两个地方用到了HttpClient。[*]Eclipse插件调用第三方的HTTP接口。
[*]Action自动化测试。
我们对HttpClient进行了一个简单的封装:
package com.alibaba.itu.tala.util;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"); //添加CookiehttpClient.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
页:
[1]