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;
	}


}

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

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

Http请求工具类

HttpUtil.java package com.jrbac.util; import java.io.File; import java.io.IOException; import java....

apache.httpclient工具包HTTP连接池请求例子

在工作中有用到HTTP请求外部地址传递数据. 用Url这个类明显效率低下,所以改用连接池概念的URL请求,这将大大提高了请求效率. 主发送类 package com.cdg.test...
  • caodegao
  • caodegao
  • 2013年10月10日 11:05
  • 12280

C#常用工具类

using System; using System.IO; using System.Text.RegularExpressions; using System.Windows.Browser; ...

C#网络编程之HTTP工具类

/// ///  /// desc:HTTP工具类(上传数据和下载数据) /// auth:LYK /// date:2017/9/20 11:24:05 /// /// n...

C# HTTP工具类

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net...

基于HttpClient4.5.1实现Http访问工具类

本工具类基于httpclient4.5.1实现,点击此处查看官方版HttpClient4.5.1手册。

自己封装的联网工具类HttpUtils的使用

类中的内容 package com.example.helper.utils; import java.io.ByteArrayOutputStream; import java.io.IOExce...

HttpClient4.3 post与get请求工具类完整示例

整个工具类代码如下所示,可直接使用! import java.io.IOException; import org.apache.http.HttpEntity; import org.apache...

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

在写网络程序的时候,经常会有从网址获取数据的需求,上一篇解析JSON就需要从百度获取天气数据,本文介绍一种模拟发送http请求的工具–HttpClient。HttpClient的介绍 The mo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:http请求工具类
举报原因:
原因补充:

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