http请求工具类

原创 2016年08月31日 10:48:57
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;
	}


}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java工具类--通过HttpClient发送http请求

在写网络程序的时候,经常会有从网址获取数据的需求,上一篇解析JSON就需要从百度获取天气数据,本文介绍一种模拟发送http请求的工具–HttpClient。HttpClient的介绍 The mo...

轻松把玩HttpClient之封装HttpClient工具类(一)(现有网上分享中的最强大的工具类)

搜了一下网络上别人封装的HttpClient,大部分特别简单,有一些看起来比较高级,但是用起来都不怎么好用。调用关系不清楚,结构有点混乱。所以也就萌生了自己封装HttpClient工具类的想法。要做就...

HTTP 请求工具类(包含HTTPS)

  • 2015-07-17 11:27
  • 971KB
  • 下载

http请求提交类工具类

java发送http的get、post请求工具类

java发送http的get、post请求工具类

http请求工具类

Java模拟http请求调用远程接口工具类(转)

package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRe...

Http请求相关工具类

1.Android封装Http请求的工具类 [java] view plaincopy import java.io.BufferedReader;...

用于处理HTTP请求的工具类

package my.util; import java.net.MalformedURLException; import java.net.URL; import javax.servlet....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)