关闭

http请求工具类

471人阅读 评论(0) 收藏 举报
分类:
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;
	}


}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20379次
    • 积分:399
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:1篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论