六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 52|回复: 0

HttpClient

[复制链接]

升级  74.67%

42

主题

42

主题

42

主题

秀才

Rank: 2

积分
162
 楼主| 发表于 2013-2-3 13:36:40 | 显示全部楼层 |阅读模式
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
 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表