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();
}
}