httputil用http获取请求的工具类

来源:互联网 发布:美国cia大数据服务公司 编辑:程序博客网 时间:2024/05/22 11:26

原文:httputil用http获取请求的工具类

源代码下载地址:http://www.zuidaima.com/share/1550463738612736.htm

package com.zuidaima.xiaocan.demo.util;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpStatus;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.params.HttpMethodParams;import org.apache.commons.io.IOUtils;import org.apache.commons.lang.StringUtils;/** * <p>Http工具类 *  * <p>Http工具类,为系统提供通用Http访问操作方法: *  * <p>1、发送GET请求; * <p>2、发送POST请求。 * @author www.zuidaima.com */public class HttpUtil {/** * <p>发送GET请求 *  * @param  url GET请求地址 *  * @return 与当前请求对应的响应内容字节数组 *  */public static byte[] doGet(String url) {return HttpUtil.doGet(url , null , null , 0);}/** * <p>发送GET请求 *  * @param  url       GET请求地址 * @param  headerMap GET请求头参数容器 *  * @return 与当前请求对应的响应内容字节数组 *  */public static byte[] doGet(String url , Map headerMap) {return HttpUtil.doGet(url , headerMap , null , 0);}/** * <p>发送GET请求 *  * @param  url       GET请求地址 * @param  proxyUrl  代理服务器地址 * @param  proxyPort 代理服务器端口号 *  * @return 与当前请求对应的响应内容字节数组 *  * @modify 窦海宁, 2012-03-19 */public static byte[] doGet(String url , String proxyUrl , int proxyPort) {return HttpUtil.doGet(url , null , proxyUrl , proxyPort);}/** * <p>发送GET请求 *  * @param  url       GET请求地址 * @param  headerMap GET请求头参数容器 * @param  proxyUrl  代理服务器地址 * @param  proxyPort 代理服务器端口号 *  * @return 与当前请求对应的响应内容字节数组 *  * @modify 窦海宁, 2012-03-19 */public static byte[] doGet(String url , Map headerMap , String proxyUrl , int proxyPort) {byte[]     content    = null;HttpClient httpClient = new HttpClient();GetMethod  getMethod  = new GetMethod(url);if (headerMap != null) {//头部请求信息if (headerMap != null) {Iterator iterator = headerMap.entrySet().iterator();while (iterator.hasNext()) {Entry entry = (Entry) iterator.next();getMethod.addRequestHeader(entry.getKey().toString() , entry.getValue().toString());}}}if (StringUtils.isNotBlank(proxyUrl)) {httpClient.getHostConfiguration().setProxy(proxyUrl , proxyPort);}//设置成了默认的恢复策略,在发生异常时候将自动重试3次,在这里你也可以设置成自定义的恢复策略getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT , 10000);//postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER , new DefaultHttpMethodRetryHandler());InputStream inputStream = null;try {if (httpClient.executeMethod(getMethod) == HttpStatus.SC_OK) {//读取内容inputStream = getMethod.getResponseBodyAsStream();content     = IOUtils.toByteArray(inputStream);} else {System.err.println("Method failed: " + getMethod.getStatusLine());}} catch (IOException ex) {ex.printStackTrace();} finally {IOUtils.closeQuietly(inputStream);getMethod.releaseConnection();}return content;}/** * <p>发送POST请求 *  * @param  url          POST请求地址 * @param  parameterMap POST请求参数容器 *  * @return 与当前请求对应的响应内容字节数组 *  */public static byte[] doPost(String url , Map parameterMap) {return HttpUtil.doPost(url , null , parameterMap , null , null , 0);}/** * <p>发送POST请求 *  * @param  url          POST请求地址 * @param  parameterMap POST请求参数容器 * @param  paramCharset 参数字符集名称 *  * @return 与当前请求对应的响应内容字节数组 *  * @modify 窦海宁, 2012-05-21 */public static byte[] doPost(String url , Map parameterMap , String paramCharset) {return HttpUtil.doPost(url , null , parameterMap , paramCharset , null , 0);}/** * <p>发送POST请求 *  * @param  url          POST请求地址 * @param  headerMap    POST请求头参数容器 * @param  parameterMap POST请求参数容器 * @param  paramCharset 参数字符集名称 *  * @return 与当前请求对应的响应内容字节数组 *  * @modify 窦海宁, 2012-05-21 */public static byte[] doPost(String url , Map headerMap , Map parameterMap , String paramCharset) {return HttpUtil.doPost(url , headerMap , parameterMap , paramCharset , null , 0);}/** * <p>发送POST请求 *  * @param  url          POST请求地址 * @param  parameterMap POST请求参数容器 * @param  paramCharset 参数字符集名称 * @param  proxyUrl     代理服务器地址 * @param  proxyPort    代理服务器端口号 *  * @return 与当前请求对应的响应内容字节数组 *  */public static byte[] doPost(String url , Map parameterMap , String paramCharset , String proxyUrl , int proxyPort) {return HttpUtil.doPost(url , null , parameterMap , paramCharset , proxyUrl , proxyPort);}/** * <p>发送POST请求 *  * @param  url          POST请求地址 * @param  headerMap    POST请求头参数容器 * @param  parameterMap POST请求参数容器 * @param  paramCharset 参数字符集名称 * @param  proxyUrl     代理服务器地址 * @param  proxyPort    代理服务器端口号 *  * @return 与当前请求对应的响应内容字节数组 *  * @modify 窦海宁, 2012-05-21 */public static byte[] doPost(String url , Map headerMap , Map parameterMap , String paramCharset , String proxyUrl , int proxyPort) {byte[]     content    = null;HttpClient httpClient = new HttpClient();PostMethod postMethod = new PostMethod(url);if (StringUtils.isNotBlank(paramCharset)) {postMethod.getParams().setContentCharset(paramCharset);postMethod.getParams().setHttpElementCharset(paramCharset);}if (headerMap != null) {//头部请求信息if (headerMap != null) {Iterator iterator = headerMap.entrySet().iterator();while (iterator.hasNext()) {Entry entry = (Entry) iterator.next();postMethod.addRequestHeader(entry.getKey().toString() , entry.getValue().toString());}}}Iterator iterator = parameterMap.keySet().iterator();while (iterator.hasNext()) {String key = (String) iterator.next();postMethod.addParameter(key , (String) parameterMap.get(key));}if (StringUtils.isNotBlank(proxyUrl)) {httpClient.getHostConfiguration().setProxy(proxyUrl , proxyPort);}//设置成了默认的恢复策略,在发生异常时候将自动重试3次,在这里你也可以设置成自定义的恢复策略postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT , 10000);//postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER , new DefaultHttpMethodRetryHandler());InputStream inputStream = null;try {if (httpClient.executeMethod(postMethod) == HttpStatus.SC_OK) {//读取内容inputStream = postMethod.getResponseBodyAsStream();content     = IOUtils.toByteArray(inputStream);} else {System.err.println("Method failed: " + postMethod.getStatusLine());}} catch (IOException ex) {ex.printStackTrace();} finally {IOUtils.closeQuietly(inputStream);postMethod.releaseConnection();}return content;}public static void main(String[] args) {Map<String, String> map = new HashMap<String, String>();map.put("wd", "nima");byte[] b = doGet("http://www.baidu.com", map);System.out.println("-------------------"+new String(b));}}    





1 0
原创粉丝点击