HTTP 请求 的方法Util
HTTP请求 的一系列方法总结
/**
* *******************************传统请求--开始**************************************
* */ /**
* HttpClient 发送 Post 请求
* @param url 路径:String
* @param mapParam 参数:java.util.Map
* @return
*/
public static String sendClientPost(String url,Map<String,String> headers,Map<String,String> mapParam){
return httpPost(url, headers,new JSONObject(mapParam), false);
} /**
* HttpClient 发送 Post 请求
* @param url 路径:String
* @param JsonObjectParam 参数:org.json.JSONObject
* @return
*/
public static String sendClientPost(String url,Map<String,String> headers,JSONObject JsonObjectParam){
return httpPost(url, headers,JsonObjectParam, false);
} /**
* HttpClient 发送 Get 请求
* @param url 路径:String
* @return
*/
public static String sendClientGet(String url){
return httpGet(url,null);
}
/**
* HttpClient 发送 Get 请求
* @param url 路径:String
* @param headers Map<String,String>
* @return
*/
public static String sendClientGet(String url,Map<String,String> headers){
return httpGet(url,headers);
} /**
* HttpClient 发送 Delete 请求
* @param url 路径:String
* @return
*/
public static String sendClientDelete(String url){
return httpDelete(url,null);
}
/**
* HttpClient 发送 Delete 请求
* @param url 路径:String
* @param headers Map<String,String>
* @return
*/
public static String sendClientDelete(String url,Map<String,String> headers){
return httpDelete(url,headers);
} /**
* urlConnectionGet
* @param url 路径
* @return
*/
public static String sendConnectionGet(String url,String param){
return sendGet(url,param);
} /**
* 向指定 URL 发送POST方法的请求
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendConnectionPost(String url,String param){
return sendPost(url,param);
}
/**
* *******************************传统请求--结束**************************************
* */ /**
* *******************************Jsoup请求--开始**************************************
* */ /**
* 发送 POST 请求
* @param url 请求地址
* @param cookie cookie:String
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @return String
*/
public static String sendJsoupPost(String url,String cookie,Map<String,String> headers,Map<String,Object> params,boolean isJsonParam) {
String sendRequest = sendRequest(url, cookie, headers,params, "POST",isJsonParam);
return sendRequest;
} /**
* 发送 POST 请求
* @param url 请求地址
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @return String
*/
public static String sendJsoupPost(String url,Map<String,String> headers,Map<String,Object> params,boolean isJsonParam) {
String sendRequest = sendRequest(url, null, headers,params, "POST", isJsonParam);
return sendRequest;
} /**
* 发送 POST 请求
* @param url 请求地址
* @param cookie cookie:String
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @return String
*/
public static String sendJsoupPost(String url,Map<String,Object> params,boolean isJsonParam) {
String sendRequest = sendRequest(url, null, null,params, "POST", isJsonParam);
return sendRequest;
} /**
* 发送 POST 请求
* @param url 请求地址
* @return String
*/
public static String sendJsoupPost(String url) {
String sendRequest = sendRequest(url, null, null,null, "POST",false);
return sendRequest;
} /**
* 发送 GET 请求
* @param url 请求地址: String
* @param cookie cookie:String
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @return String
*/
public static String sendJsoupGet(String url,String cookie,Map<String,String> headers,Map<String,Object> params) {
String sendRequest = sendRequest(url, cookie, headers,params, "GET",false);
return sendRequest;
} /**
* 发送 GET 请求
* @param url 请求地址: String
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @return String
*/
public static String sendJsoupGet(String url,Map<String,String> headers,Map<String,Object> params) {
String sendRequest = sendRequest(url, null, headers,params, "GET",false);
return sendRequest;
} /**
* 发送 GET 请求
* @param url 请求地址: String
* @return String
*/
public static String sendJsoupGet(String url) {
String sendRequest = sendRequest(url, null, null,null, "GET",false);
return sendRequest;
} /**
* 发送 GET 请求
* @param url 请求地址: String
* @param params 参数:Map<String,Object>
* @return String
*/
public static String sendJsoupGet(String url,Map<String,Object> params) {
String sendRequest = sendRequest(url, null, null,params, "GET",false);
return sendRequest;
} /**
* *******************************Jsoup请求--结束**************************************
* */ /**
* *******************************获取网页对象--开始**************************************
* */ /**
* 发送 GET 请求
* @param url 请求地址: String
* @return Document
*/
public static Document sendJsoupGetDocument(String url) {
Document sendRequestDocument = sendRequestDocument(url, null, null,null, "GET",false);
return sendRequestDocument;
} /**
* 发送 GET 请求
* @param url 请求地址: String
* @param cookie cookie:String
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @return Document
*/
public static Document sendJsoupGetDocument(String url,String cookie,Map<String,String> headers,Map<String,Object> params) {
Document sendRequest = sendRequestDocument(url, cookie, headers,params, "GET",false);
return sendRequest;
} /**
* 发送 POST 请求
* @param url 请求地址: String
* @return Document
*/
public static Document sendJsoupPostDocument(String url) {
Document sendRequestDocument = sendRequestDocument(url, null, null,null, "POST",false);
return sendRequestDocument;
} /**
* 发送 POST 请求
* @param url 请求地址
* @param cookie cookie:String
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @return Document
*/
public static Document sendJsoupPostDocument(String url,String cookie,Map<String,String> headers,Map<String,Object> params,boolean isJsonParam) {
Document sendRequest = sendRequestDocument(url, cookie, headers,params, "POST", isJsonParam);
return sendRequest;
} /**
* *******************************获取网页对象--结束**************************************
* */ /**
* post请求
* @param url url地址
* @param jsonParam 参数
* @param noNeedResponse 不需要返回结果
* @return
*/
private static String httpPost(String url,Map<String,String> headers,JSONObject jsonParam, boolean noNeedResponse){
//post请求返回结果
CloseableHttpClient httpClient = HttpClients.createDefault();
// DefaultHttpClient httpClient = new DefaultHttpClient();
String jsonResult = null;
HttpPost method = new HttpPost(url); if(headers!=null){
Set<String> keySet = headers.keySet();
for (String key : keySet) {
method.addHeader(key, headers.get(key));
}
}
try {
if (null != jsonParam) {
//解决中文乱码问题
StringEntity entity = new StringEntity(jsonParam.toString(), "UTF-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
method.setEntity(entity);
}
HttpResponse result = httpClient.execute(method);
url = URLDecoder.decode(url, "UTF-8");
/**请求发送成功,并得到响应**/
//if (result.getStatusLine().getStatusCode() == 200) {
try {
/**读取服务器返回过来的json字符串数据**/
jsonResult = EntityUtils.toString(result.getEntity());
if (noNeedResponse) {
return null;
}
/**把json字符串转换成json对象**/
} catch (Exception e) {
logger.error("HttpPost请求提交失败:" + url, e);
}
//}
} catch (Exception e) {
logger.error("HttpPost请求提交失败:" + url, e);
}
return jsonResult;
} /**
* 发送get请求
* @param url 路径
* @return
*/
private static String httpGet(String url,Map<String,String> headers){
//get请求返回结果
String jsonResult = null;
try {
CloseableHttpClient httpClient = HttpClients.createDefault();
// DefaultHttpClient client = new DefaultHttpClient();
//发送get请求
HttpGet request = new HttpGet(url);
if(headers!=null){
Set<String> keySet = headers.keySet();
for (String key : keySet) {
request.addHeader(key, headers.get(key));
}
} HttpResponse response = httpClient.execute(request); /**请求发送成功,并得到响应**/
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
/**读取服务器返回过来的json字符串数据**/
jsonResult = EntityUtils.toString(response.getEntity());
} else {
logger.error("HttpGet请求提交失败:" + url);
}
} catch (Exception e) {
logger.error("HttpGet请求提交失败:" + url, e);
}
return jsonResult;
} /**
* 发送get请求
* @param url 路径
* @return
*/
private static String httpDelete(String url,Map<String,String> headers){
//get请求返回结果
String jsonResult = null;
try {
CloseableHttpClient httpClient = HttpClients.createDefault();
// DefaultHttpClient client = new DefaultHttpClient();
//发送get请求
HttpDelete request = new HttpDelete(url);
if(headers!=null){
Set<String> keySet = headers.keySet();
for (String key : keySet) {
request.addHeader(key, headers.get(key));
}
} HttpResponse response = httpClient.execute(request); /**请求发送成功,并得到响应**/
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
/**读取服务器返回过来的json字符串数据**/
jsonResult = EntityUtils.toString(response.getEntity());
} else {
logger.error("HttpDelete请求提交失败:" + url);
}
} catch (Exception e) {
logger.error("HttpDelete请求提交失败:" + url, e);
}
return jsonResult;
} /**
* 向指定URL发送GET方法的请求
* @param url 发送请求的URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
*/
private static String sendGet(String url, String param) { String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
// Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
} /**
* 向指定 URL 发送POST方法的请求
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
private static String sendPost(String url, String param) { PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e);
e.printStackTrace();
}finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}catch(Exception ex){
ex.printStackTrace();
}
}
return result;
} /** 发送 利用JSOUP 发送 Request 请求
* @param url 请求地址: String
* @param cookie cookie:String
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @param method 请求方式: String,GER OR POST
* @return String
*/
private static String sendRequest(String url,String cookie,Map<String,String> headers,Map<String,Object> params,String method,boolean isJsonParam) {
String res = null;
try {
Document document = null;
Connection connect = getConnection(url, cookie, headers, params,isJsonParam);
connect.ignoreContentType(true);
if("GET".equals(method)) {
document = connect.get();
}else if("POST".equals(method)) {
document = connect.post();
} if(document != null) {
res = document.body().text();
}
} catch (Exception e) {
e.printStackTrace();
}
return res;
} /** 发送 利用JSOUP 发送 Request 请求
* @param url 请求地址: String
* @param cookie cookie:String
* @param headers 头信息:Map<String,String>
* @param params 参数:Map<String,Object>
* @param method 请求方式: String,GER OR POST
* @return String
*/
private static Document sendRequestDocument(String url,String cookie,Map<String,String> headers,Map<String,Object> params,String method,boolean isJsonParam) {
Document document = null;
try {
Connection connect = getConnection(url, cookie, headers, params,isJsonParam);
connect.ignoreContentType(true);
if("GET".equals(method)) {
document = connect.get();
}else if("POST".equals(method)) {
document = connect.post();
}
} catch (Exception e) {
e.printStackTrace();
}
return document;
} /**
* 获取JSOUP Connection
* @param url 请求地址: String
* @param cookie cookie:String
* @param headers 头信息:Map<String,String>
* @param params 头信息:Map<String,Object>
* @return Connection org.jsoup.Connection
*/
private static Connection getConnection(String url,String cookie,Map<String,String> headers,Map<String,Object> params,boolean isJsonParam) {
Connection connect = Jsoup.connect(url);
if(cookie != null) {
connect.header("Cookie", cookie);
} if(params != null) {
Map<String,String> param = new HashMap<String,String>();
Set<String> keySet = params.keySet();
for (String key : keySet) {
if(params.get(key) != null){
param.put(key, params.get(key)==null ? null : params.get(key)+"");
}
}
if(isJsonParam){
connect.requestBody(new JSONObject(param).toString());
// connect.postDataCharset(new JSONObject(param).toString());
}else{ connect.data(param);
}
} if(headers!= null) {
connect.headers(headers);
}else if(headers==null) {
connect.header("Accept", "application/json");
connect.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0");
}
return connect;
}
HTTP 请求 的方法Util的更多相关文章
- 使用SpringAOP获取一次请求流经方法的调用次数和调用耗时
引语 作为工程师,不能仅仅满足于实现了现有的功能逻辑,还必须深入认识系统.一次请求,流经了哪些方法,执行了多少次DB操作,访问了多少次文件操作,调用多少次API操作,总共有多少次IO操作,多少CPU操 ...
- 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)
Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(j ...
- SpringMVC下Ajax请求的方法,@Responsebody如果返回的是布尔值,ajax不会接到任何回传数据
SpringMVC框架下,如果用ajax向后台请求得方法如果使用@Responsebody返回布尔值的话,ajax得不到任何的回传数据. 但是如果返回String类型,就是正常的. 测试了下代码写得没 ...
- php之curl实现http与https请求的方法
原文地址:http://m.jb51.net/show/56492 这篇文章主要介绍了php之curl实现http与https请求的方法,分别讲述了PHP访问http网页与访问https网页的实例 ...
- thinkphp 定位查询 Model:last您所请求的方法不存在!
thinkphp 定位查询 Model:last您所请求的方法不存在! 用thinkphp3.1做项目的时候为了获取记录表中最后一个id用到了last()方法,出现了这个错误:Model:last ...
- Nginx反向代理、CORS、JSONP等跨域请求解决方法总结
由于 Javascript 同源策略的存在使得一个源中加载来自其它源中资源的行为受到了限制.即会出现跨域请求禁止. 通俗一点说就是如果存在协议.域名.端口或者子域名不同服务端,或一者为IP地址,一者为 ...
- webServices 使用GET请求接口方法
webServices 若要使用GET请求接口方法在Web.config 下添加这段 <webServices> <protocols> <add ...
- legend2---开发日志10(ajax请求的方法是否同样会执行base控制器里面的方法)
legend2---开发日志10(ajax请求的方法是否同样会执行base控制器里面的方法) 一.总结 一句话总结:会执行的,所以写base控制器里面的方法要注意,base控制器里面的方法要以查数据为 ...
- 发送http请求的方法
在http/1.1 协议中,定义了8种发送http请求的方法 get post options head put delete trace connect patch. 根据http协议的设计初衷,不 ...
随机推荐
- [一]SpringBoot 之 HelloWorld
(1)新建一个Maven Java工程 (2)在pom.xml文件中添加Spring BootMaven依赖 2.1在pom.xml中引入spring-boot-start-parent spring ...
- BZOJ1563/洛谷P1912 诗人小G 【四边形不等式优化dp】
题目链接 洛谷P1912[原题,需输出方案] BZOJ1563[无SPJ,只需输出结果] 题解 四边形不等式 什么是四边形不等式? 一个定义域在整数上的函数\(val(i,j)\),满足对\(\for ...
- [JSOI2007]建筑抢修——贪心反悔堆
题目描述 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建 ...
- 音视频处理之FFmpeg程序的介绍与使用20180302
一.FFMPEG程序介绍与使用 主要介绍一下ffmpeg工程包含的三个exe的使用方法. 1. FFMPEG程序介绍 1.1.下载 ffmpeg的官方网站是:http://ffmpeg.org/ 下载 ...
- openresty--centos7下开发环境安装
1. 安装依赖的软件包 yum install readline-devel pcre-devel openssl-devel gcc 2. 安装openresty -- 1. 下载openresty ...
- Nginx报错 nginx: [error] open() "/usr/local/nginx-1.6.3/logs/nginx.pid" failed (2: No such file or directory)
问题: 解决: http://www.jianshu.com/p/918eb337a206 dd
- 组合计数 && Stirling数
参考: http://blog.csdn.net/qwb492859377/article/details/50654627 http://blog.csdn.net/acdreamers/artic ...
- css等比例分割父级容器(完美三等分)
html部分代码: 方法一: 浮动布局+百分比 (将子元素依次左浮动,根据子元素的个数,设定每个子元素的宽度百分比) 方法二:行内元素(inline-block)+百分比 方法三: 父元素 disp ...
- 「Python」pandas入门教程
pandas适合于许多不同类型的数据,包括: 具有异构类型列的表格数据,例如SQL表格或Excel数据 有序和无序(不一定是固定频率)时间序列数据. 具有行列标签的任意矩阵数据(均匀类型或不同类型) ...
- 3 ways to download files with PowerShell
Perhaps the greatest strength of PowerShell is it's foundation on the .NET framework. The .NET frame ...