您的位置:首页 > 理论基础 > 计算机网络

自己封装的调用HttpClient的HttpServiceCaller类

2012-10-08 16:25 260 查看
package xxx.com.util;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.HashMap;

import java.util.Map;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.HttpMethod;

import org.apache.commons.httpclient.HttpMethodBase;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.SimpleHttpConnectionManager;

import org.apache.commons.httpclient.methods.GetMethod;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.commons.io.IOUtils;

/**

* @ClassName: HttpServiceCaller.java

* @Description: TODO

* @author SonicWu

* @date 2009-11-4 下午06:42:56

*/

public class HttpServiceCaller {

/**

* @param requestURL

* @param data

* @return responseText

* @throws Exception

*/

public static String postMethod(String requestURL, NameValuePair[] data) throws Exception {

PostMethod postMethod = new PostMethod(requestURL);

postMethod.setRequestBody(data);

return call(requestURL, postMethod);

}

/**

* @param requestURL

* @param data

* @return responseText

* @throws Exception

*/

public static String postUTF8Method(String requestURL, NameValuePair[] data) throws Exception {

PostMethod postMethod = new PostMethod(requestURL);

postMethod.setRequestBody(data);

postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

postMethod.addRequestHeader("Connection", "close");

return call(requestURL, postMethod);

}

/**

* @author jackzhou

* @param requestURL

* @param data

* @return

* @throws Exception

*/

public static String postMethod(String requestURL, HashMap<String, String> postDate) throws Exception {

NameValuePair[] data = new NameValuePair[postDate.entrySet().size()];

int i=0;

for(Map.Entry<String, String> entry : postDate.entrySet()) {

data[i] = new NameValuePair(entry.getKey(), entry.getValue());

i++;

}

PostMethod postMethod = new PostMethod(requestURL);

postMethod.setRequestBody(data);

postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

HttpClient httpClient = new HttpClient();

String responseText = null;

int statusCode = httpClient.executeMethod(postMethod);

if (statusCode != 200) {

String errorMessage = IOUtils.toString(postMethod.getResponseBodyAsStream(), postMethod.getResponseCharSet());

throw new Exception("call failed : " + errorMessage);

}

responseText = IOUtils.toString(postMethod.getResponseBodyAsStream(), postMethod.getResponseCharSet());

return responseText;

}

public static String postMethod(String requestURL, HashMap<String, String> postDate, String encode) throws Exception {

NameValuePair[] data = new NameValuePair[postDate.entrySet().size()];

int i=0;

for(Map.Entry<String, String> entry : postDate.entrySet()) {

data[i] = new NameValuePair(entry.getKey(), entry.getValue());

i++;

}

PostMethod postMethod = new PostMethod(requestURL);

postMethod.setRequestBody(data);

postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

HttpClient httpClient = new HttpClient();

String responseText = null;

int statusCode = httpClient.executeMethod(postMethod);

if (statusCode != 200) {

String errorMessage = IOUtils.toString(postMethod.getResponseBodyAsStream(), encode);

throw new Exception("call failed : " + errorMessage);

}

responseText = IOUtils.toString(postMethod.getResponseBodyAsStream(), encode);

return responseText;

}

/**

* @param requestURL

* @return responseText

* @throws Exception

*/

public static String getMethod(String requestURL) throws Exception {

GetMethod getMethod = new GetMethod(requestURL);

return call(requestURL, getMethod);

}

/**

* @param requestURL

* @param method

* @return responseText

* @throws Exception

*/

private static String call(String requestURL, HttpMethod method) throws Exception {

HttpClient httpClient = new HttpClient();

//会报错 HTTP 503 special method ....

// method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

// method.addRequestHeader("Connection", "close");

String responseText = null;

try {

int statusCode = httpClient.executeMethod(method);

if (statusCode != 200) {

String errorMessage = method.getResponseBodyAsString();

throw new Exception("call failed : " + errorMessage);

}

StringBuilder responseBody = new StringBuilder();

InputStream is = method.getResponseBodyAsStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is));

String line;

while((line = br.readLine())!=null) {

responseBody.append(line);

}

responseText = responseBody.toString();

br.close();

is.close();

} catch (Exception e) {

throw e;

} finally {

SimpleHttpConnectionManager connectionManager = (SimpleHttpConnectionManager) httpClient.getHttpConnectionManager();

connectionManager.shutdown();

method.releaseConnection();

}

return responseText;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: