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();  
    }  
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章