import org.apache.commons.httpclient.*;
...
public class HttpClientUtils {
/**
* 通过get方法获取HTTP response;
* @param URL
* @param headerMap
* @return
*/
public static String getHttpResponse4Get(String URL,Map<String,String> headerMap){
//构造HttpClient的实例
HttpClient httpClient = new HttpClient();
//创建GET方法的实例
GetMethod getMethod = new GetMethod(URL);
//使用系统提供的默认的恢复策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
//装载Header信息
if(headerMap!=null){
Iterator<String> it= headerMap.keySet().iterator();
while (it.hasNext()){
String key =(String)it.next();
String value=headerMap.get(key);
getMethod.setRequestHeader(key,value);
}
}
try {
//执行getMethod
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: "
+ getMethod.getStatusLine());
}
//读取内容
byte[] responseBody = getMethod.getResponseBody();
System.out.println("------- Response Info --------");
System.out.println("statusCode:"+statusCode);
//处理内容
String body= new String(responseBody);
System.out.println(body);
return body;
} catch (HttpException e) {
//发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
e.printStackTrace();
} catch (IOException e) {
//发生网络异常
e.printStackTrace();
} finally {
//释放连接
getMethod.releaseConnection();
}
return "";
}
/**
* 通过Post方法获取HTTP返回值
* @param url
* @param headerMap
* @param postMap
* @return
*/
public static String getHttpResponse4Post(String url,Map<String,String> headerMap,Map<String,String> postMap)
{
//构造HttpClient的实例
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(url);
//装在Header信息
if(headerMap!=null){
Iterator<String> it= headerMap.keySet().iterator();
System.out.println("-----HeaderInfo-----");
while (it.hasNext()){
String key =(String)it.next();
String value=headerMap.get(key);
System.out.println(key+"-->"+value);
postMethod.setRequestHeader(key,value);
}
}
// 填入各个表单域的值
if(postMap!=null){
System.out.println("-----PostData-----");
Iterator<String> it= postMap.keySet().iterator();
while (it.hasNext()){
String key =(String)it.next();
String value=postMap.get(key);
System.out.println(key+"-->"+value);
postMethod.setParameter(key,value);
}
}
try {
//执行getMethod
int statusCode = httpClient.executeMethod(postMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: "
+ postMethod.getStatusLine());
}
//读取内容
byte[] responseBody = postMethod.getResponseBody();
//处理内容
String body= new String(responseBody);
System.out.println("------- Response Info --------");
System.out.println("statusCode:"+statusCode);
System.out.println(body);
return body;
} catch (HttpException e) {
//发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
e.printStackTrace();
} catch (IOException e) {
//发生网络异常
e.printStackTrace();
} finally {
//释放连接
postMethod.releaseConnection();
}
return "";
}
}
### always remember ###
get(post)Method.releaseConnection();
OTHERWISE: you will eat up all connections