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的更多相关文章

  1. 使用SpringAOP获取一次请求流经方法的调用次数和调用耗时

    引语 作为工程师,不能仅仅满足于实现了现有的功能逻辑,还必须深入认识系统.一次请求,流经了哪些方法,执行了多少次DB操作,访问了多少次文件操作,调用多少次API操作,总共有多少次IO操作,多少CPU操 ...

  2. 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)

    Java原生的API可用于发送HTTP请求 即java.net.URL.java.net.URLConnection,JDK自带的类: 1.通过统一资源定位器(java.net.URL)获取连接器(j ...

  3. SpringMVC下Ajax请求的方法,@Responsebody如果返回的是布尔值,ajax不会接到任何回传数据

    SpringMVC框架下,如果用ajax向后台请求得方法如果使用@Responsebody返回布尔值的话,ajax得不到任何的回传数据. 但是如果返回String类型,就是正常的. 测试了下代码写得没 ...

  4. php之curl实现http与https请求的方法

    原文地址:http://m.jb51.net/show/56492   这篇文章主要介绍了php之curl实现http与https请求的方法,分别讲述了PHP访问http网页与访问https网页的实例 ...

  5. thinkphp 定位查询 Model:last您所请求的方法不存在!

    thinkphp 定位查询 Model:last您所请求的方法不存在!   用thinkphp3.1做项目的时候为了获取记录表中最后一个id用到了last()方法,出现了这个错误:Model:last ...

  6. Nginx反向代理、CORS、JSONP等跨域请求解决方法总结

    由于 Javascript 同源策略的存在使得一个源中加载来自其它源中资源的行为受到了限制.即会出现跨域请求禁止. 通俗一点说就是如果存在协议.域名.端口或者子域名不同服务端,或一者为IP地址,一者为 ...

  7. webServices 使用GET请求接口方法

    webServices  若要使用GET请求接口方法在Web.config 下添加这段 <webServices>     <protocols>       <add  ...

  8. legend2---开发日志10(ajax请求的方法是否同样会执行base控制器里面的方法)

    legend2---开发日志10(ajax请求的方法是否同样会执行base控制器里面的方法) 一.总结 一句话总结:会执行的,所以写base控制器里面的方法要注意,base控制器里面的方法要以查数据为 ...

  9. 发送http请求的方法

    在http/1.1 协议中,定义了8种发送http请求的方法 get post options head put delete trace connect patch. 根据http协议的设计初衷,不 ...

随机推荐

  1. 【BZOJ3566】概率充电器(动态规划)

    [BZOJ3566]概率充电器(动态规划) 题面 BZOJ Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: "采用全新纳米级加工 ...

  2. linux 递归删除目录文件

    比如删.svn文件 >find . -name ".svn" | xargs -exec rm -rf

  3. SpringBoot web 小项目

    Spring Boot 整合 Thymeleaf 完整 Web 案例 原创出处  作者:泥瓦匠BYSocket 希望转载,保留摘要,谢谢! Thymeleaf 是一种模板语言.那模板语言或模板引擎是什 ...

  4. C#调用GDI+1.1中的函数实现高斯模糊、USM锐化等经典效果。

    http://www.cnblogs.com/Imageshop/archive/2012/12/13/2815712.html 在GDI+1.1的版本中,MS加入不少新的特性,其中的特效类Effec ...

  5. 前端PHP入门-004-数据类型,特别需要注意字符串

    人类世界对万事万物都有种类划分,例如: 哺乳动物 人.猫.马.鸭嘴兽-.等等 蔬菜 西红柿.波菜.茄子-.等等 水果 西瓜.桃子.苹果-.等等 数据类型:就是对数据分类的一个划分而已 整型就是整数 我 ...

  6. tomcat启动 报org.apache.catalina.LifecycleException异常

    java 服务器 tomcat启动 报org.apache.catalina.LifecycleException异常 异常代码如下: [2018-05-10 04:45:08,856] Artifa ...

  7. AJAX 状态值与状态码详解

    1- AJAX状态值与状态码区别 AJAX状态值是指,运行AJAX所经历过的几种状态,无论访问是否成功都将响应的步骤,可以理解成为AJAX运行步骤.如:正在发送,正在响应等,由AJAX对象与服务器交互 ...

  8. fmt:formatNumber use locale display negative currency in -$xxx.xx format in JSTL

    First, we want to know our own locale,how to display the locale in a JSTL? <c:out value="${p ...

  9. hdu 1907 John (anti—Nim)

    John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)http://acm.h ...

  10. 字符串hash的学习部分 可以算是模板?

    资料来自于http://www.bilibili.com/video/av7230433/ 定义这个字符串为s ①单hash hash[i] = (hash[i - 1] * p + idx(s[i] ...