package com.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请求。
*
*/
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));
} }

httputil用http获取请求的工具类的更多相关文章

  1. HttpUtils 用于进行网络请求的工具类

    原文:http://www.open-open.com/code/view/1437537162631 import java.io.BufferedReader; import java.io.By ...

  2. HTTP请求客户端工具类

    1.maven 引入依赖 <dependency> <groupId>commons-httpclient</groupId> <artifactId> ...

  3. Spring MVC模式下,获取WebApplicationContext的工具类 方法

    在已有的注解类型下,获取WebApplicationContext的工具类 通过  WebApplicationContextUtils.getRequiredWebApplicationContex ...

  4. android 获取手机信息工具类

    package com.yqy.yqy_listviewheadview; import android.content.Context; import android.telephony.Telep ...

  5. 发送http请求和https请求的工具类

    package com.haiyisoft.cAssistant.utils; import java.io.IOException;import java.util.ArrayList; impor ...

  6. 工具类分享之获取Request/Response工具类《RequestContextHolderUtil》

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/aiyaya_/article/details/78975893前言在开发spring web项目时, ...

  7. java中模拟http(https)请求的工具类

    在java中,特别是java web中,我们经常需要碰到的一个场景是我们需要从服务端去发送http请求,获取到数据,而不是直接从浏览器输入请求网址获得相应.比如我们想访问微信接口,获取其返回信息. 在 ...

  8. 高德地图web端笔记;发送http请求的工具类

    1.查询所有电子围栏 package com.skjd.util; import java.io.BufferedReader; import java.io.InputStream; import ...

  9. 分享自己配置的HttpURLConnection请求数据工具类

    >>该工具类传入string类型url返回string类型获取结果import java.io.BufferedReader;import java.io.InputStream;impo ...

随机推荐

  1. UESTC--1271--Search gold(贪心)

    Search gold Time Limit: 1000MS   Memory Limit: 65535KB   64bit IO Format: %lld & %llu Submit Sta ...

  2. Oracle实例和Oracle数据库(Oracle体系结构)---转载

    对于初接触Oracle 数据库的人来讲,很容易混淆的两个概念即是Oracle 实例和Oracle 数据库.这两 概念不同于SQL sever下的实例与数据库,当然也有些相似之处.只是在SQL serv ...

  3. Tool-DB:Navicat

    ylbtech-Tool-DB:Navicat Navicat是一套快速.可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小企业的 ...

  4. QT-解除connect

    前言:解除关联. 一.新建工程 二.新建部件 在ui设计界面拖入一个line edit,一个label以及两个button按钮 右键“关联”按钮转到槽,选择clicked(),添加如下代码: void ...

  5. dell台式机设置U盘启动步骤

    在开机启动看见DELL的标志后,连续按F12键进入BIOS界面,然后按照界面进行操作,操做完成后保存退出,然后再按F12键选择U盘启动. 注意硬盘模式需要选择为disabled.

  6. GIT 常用方法

    代码提交顺序: conmmit(提交代码到本地仓库)   --->>>   pull(将本地仓库代码合并)  ---->>>   push(将本地合并后的代码提交到 ...

  7. AutoFac与ASP.NET MVC结合使用

    MVC下的配置 通过NuGet安装AutoFac插件:Install-Package Autofac.Mvc5 在Global中调用: var builder= new ContainerBuilde ...

  8. ubuntu16.04 安装 docker-compose

    下载安装 docker-composecurl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose ...

  9. 一个关于传参数js数组的封装方法(寄生模式)

    function createArr(){ var arr = new Array(); arr.push.apply(arr,arguments); arr.toJoin = function(){ ...

  10. ZBrush软件特性之Edit

    ZBrush®中的Edit调控板控制撤销和重做命令,它有一或两个命令设置将根据Tool工具调控板当前选择的工具而定,默认配置的命令仅有文档编辑,不过当激活一个3D工具,只针对这个工具的两个按钮设置变成 ...