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

http请求工具类

2016-08-31 10:48 369 查看
package cc.com.util;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONObject;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
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.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.io.IOUtils;

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 {
try {
SimpleHttpConnectionManager connectionManager = (SimpleHttpConnectionManager) httpClient.getHttpConnectionManager();
connectionManager.shutdown();
method.releaseConnection();
} catch(Exception e) {
e.printStackTrace();
}
}

return responseText;
}

/**
* @param requestURL
* @return responseText
* @throws Exception
*/
public static String getMethod2(String requestURL) throws Exception {
GetMethod getMethod = new GetMethod(requestURL);

return call2(requestURL, getMethod);
}

/**
* @param requestURL
* @param method
* @return responseText
* @throws Exception
*/
private static String call2(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 = method.getResponseBodyAsString();

// br.close();
//   is.close();
} catch (Exception e) {
throw e;
} finally {
try {
SimpleHttpConnectionManager connectionManager = (SimpleHttpConnectionManager) httpClient.getHttpConnectionManager();
connectionManager.shutdown();
method.releaseConnection();
} catch(Exception e) {
e.printStackTrace();
}
}

return responseText;
}
public static String putMethod(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++;
}

PutMethod putMethod = new PutMethod(requestURL);
putMethod.addRequestHeader("Content-Type", "application/json;charset=UTF-8");
//		method.addRequestHeader("Connection", "close");

new StringReader("");
//RequestEntity entity =new StringRequestEntity(JSONObject.fromObject(postDate).toString());;
String str=JSONObject.fromObject(postDate).toString();
RequestEntity entity =new InputStreamRequestEntity( new ByteArrayInputStream(str.getBytes()));
putMethod.setRequestEntity(entity);
HttpClient httpClient = new HttpClient();
String responseText = null;

int statusCode = httpClient.executeMethod(putMethod);
System.out.println("http code:"+statusCode);

if (statusCode <200 || statusCode>399) {
String errorMessage = IOUtils.toString(putMethod.getResponseBodyAsStream(), putMethod.getResponseCharSet());
System.out.println("errorMsg:"+errorMessage);
throw new Exception("call failed : " + errorMessage);
}
responseText = IOUtils.toString(putMethod.getResponseBodyAsStream(), putMethod.getResponseCharSet());

return responseText;
}

public static String postStringMethod(String requestURL,String postData) throws Exception {

PostMethod putMethod = new PostMethod(requestURL);
putMethod.addRequestHeader("Content-Type", "application/json;charset=UTF-8");

RequestEntity entity =new InputStreamRequestEntity( new ByteArrayInputStream(postData.getBytes()));
putMethod.setRequestEntity(entity);
HttpClient httpClient = new HttpClient();
String responseText = null;

int statusCode = httpClient.executeMethod(putMethod);
System.out.println("http code:"+statusCode);

if (statusCode <200 || statusCode>399) {
String errorMessage = IOUtils.toString(putMethod.getResponseBodyAsStream(), putMethod.getResponseCharSet());
System.out.println("errorMsg:"+errorMessage);
throw new Exception("call failed : " + errorMessage);
}
responseText = IOUtils.toString(putMethod.getResponseBodyAsStream(), putMethod.getResponseCharSet());

return responseText;
}

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