httpclient工具类

1.引入maven依赖

        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>

2.HttpClientUtils

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.log4j.Logger;

public class HttpClientUtils {
    private static final Logger log = Logger.getLogger(HttpClientUtils.class);

    /**
     * @param url
     * @param contentType "application/x-www-form-urlencoded;charset=utf-8" 请求头
     * @param paramMap 参数
     * @param timeout  请求超时、响应超时 时间
     * @return
     */
    public static String doPost(String url, String contentType, Map<String, Object> paramMap, int timeout) {
        String ret = "";
        HttpClient client = new HttpClient(new HttpClientParams(), new SimpleHttpConnectionManager(true));
        client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
        client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
        // 忽略cookie的处理(httpclient请求默认需要传cookie)
        client.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
        PostMethod post = new PostMethod(url);
        try {
            post.setRequestHeader("Content-Type", contentType);
            post.setRequestHeader("Connection", "close");

            if (paramMap != null) {
                Set<String> keySet = paramMap.keySet();
                for (String key : keySet) {
                    post.setParameter(key, paramMap.get(key).toString());
                }
            }

            client.executeMethod(post);
            BufferedReader reader = new BufferedReader(new InputStreamReader(post.getResponseBodyAsStream()));
            StringBuffer stringBuffer = new StringBuffer();
            String str = "";
            while ((str = reader.readLine()) != null) {
                stringBuffer.append(str);
            }
            ret = stringBuffer.toString();
        } catch (Exception e) {
            String paramStr = transMapToString(paramMap);
            log.error("请求失败,url:"+url+",param:"+paramStr, e);
        } finally {
            post.releaseConnection();
            client.getHttpConnectionManager().closeIdleConnections(0);
        }
        return ret;
    }

    /**
     * @param url
     * @param contentType "application/x-www-form-urlencoded;charset=utf-8" 请求头
     * @param paramMap 参数
     * @param timeout  请求超时、响应超时 时间
     * @return
     */
    public static String doGet(String url, String contentType, Map<String, Object> paramMap, int timeout) {
        String ret = "";
        HttpClient client = new HttpClient(new HttpClientParams(), new SimpleHttpConnectionManager(true));
        client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
        client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
        // 忽略cookie的处理(httpclient请求默认需要传cookie)
        //client.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
        GetMethod get = new GetMethod(url);
        try {
            if (paramMap != null) {
                NameValuePair[] params = new NameValuePair[paramMap.size()]; 

                int index=0;
                Set<String> keySet = paramMap.keySet();
                for (String key : keySet) {
                    params[index++] = new NameValuePair(key, paramMap.get(key).toString());
                }
                get.setQueryString(params);
            }
            client.executeMethod(get);
            BufferedReader reader = new BufferedReader(new InputStreamReader(get.getResponseBodyAsStream()));
            StringBuffer stringBuffer = new StringBuffer();
            String str = "";
            while ((str = reader.readLine()) != null) {
                stringBuffer.append(str);
            }
            ret = stringBuffer.toString();

        } catch (Exception e) {
            String paramStr = transMapToString(paramMap);
            log.error("请求失败,url:"+url+",param:"+paramStr, e);
        } finally {
            get.releaseConnection();
            client.getHttpConnectionManager().closeIdleConnections(0);
        }
        return ret;
    }


    /** 
     * 方法名称:transMapToString 
     * 传入参数:map 
     * 返回值:String 形如 'username':2,'name':1
    */  
    public static String transMapToString(Map map){  
      Entry entry;  
      StringBuffer sb = new StringBuffer();
      if(map!=null){
          for(Iterator iterator = map.entrySet().iterator(); iterator.hasNext();){  
              entry = (Entry)iterator.next();  
              sb.append("'").append(entry.getKey().toString()).append( "':" ).append(null==entry.getValue()?"":  
              entry.getValue().toString()).append (iterator.hasNext() ? "," : "");  
          } 
      }

      return sb.toString();  
    }  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值