坐标
代码语言:javascript复制 <dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.1</version>
<classifier>jdk15</classifier>
</dependency>
工具类
代码语言:javascript复制package com.baomidou.springboot.utils.http;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
* HTTP 请求工具类
*/
public class HttpUtils {
private static PoolingHttpClientConnectionManager connMgr;
private static RequestConfig requestConfig;
private static final int MAX_TIMEOUT = 120000000;
static {
// 设置连接池
connMgr = new PoolingHttpClientConnectionManager();
// 设置连接池大小
connMgr.setMaxTotal(100);
connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());
RequestConfig.Builder configBuilder = RequestConfig.custom();
// 设置连接超时
configBuilder.setConnectTimeout(MAX_TIMEOUT);
// 设置读取超时
configBuilder.setSocketTimeout(MAX_TIMEOUT);
// 设置从连接池获取连接实例的超时
configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);
// 在提交请求之前 测试连接是否可用
configBuilder.setStaleConnectionCheckEnabled(true);
requestConfig = configBuilder.build();
}
/**
* 发送 GET 请求(HTTP),不带输入数据
*
* @param url
* @return
*/
public static String doGet(String url) {
return doGet(url, new HashMap<String, Object>());
}
/**
* 发送 GET 请求(HTTP),K-V形式
*
* @param url
* @param params
* @return
*/
public static String doGet(String url, Map<String, Object> params) {
String apiUrl = url;
StringBuffer param = new StringBuffer();
int i = 0;
for (String key : params.keySet()) {
if (i == 0)
param.append("?");
else
param.append("&");
param.append(key).append("=").append(params.get(key));
i ;
}
apiUrl = param;
String result = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet(apiUrl);
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity, "UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public static JSONObject doGet(String url, String token) {
return doGet(url, new HashMap<String, Object>(), token);
}
public static JSONObject doGet(String url, Map<String, Object> params, String token) {
String apiUrl = url;
StringBuffer param = new StringBuffer();
int i = 0;
for (String key : params.keySet()) {
if (i == 0)
param.append("?");
else
param.append("&");
param.append(key).append("=").append(params.get(key));
i ;
}
apiUrl = param;
String result = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet(apiUrl);
httpGet.setHeader("X-Auth-Token", token);
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity, "UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
}
JSONObject fromObject = JSONObject.fromObject(result);
return fromObject;
}
public static JSONArray doGet2(String url, String token) {
return doGet2(url, new HashMap<String, Object>(), token);
}
public static JSONArray doGet2(String url, Map<String, Object> params, String token) {
String apiUrl = url;
StringBuffer param = new StringBuffer();
int i = 0;
for (String key : params.keySet()) {
if (i == 0)
param.append("?");
else
param.append("&");
param.append(key).append("=").append(params.get(key));
i ;
}
apiUrl = param;
String result = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet(apiUrl);
httpGet.setHeader("X-Auth-Token", token);
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity, "UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
}
return JSONArray.fromObject(result);
}
public static String doGet3(String url, String token) {
String apiUrl = url;
String result = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet(apiUrl);
httpGet.setHeader("X-Auth-Token", token);
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity, "UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public static String doGet3(String urls) {
String apiUrl = urls;
String result = null;
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpGet httpGet = new HttpGet(apiUrl);
HttpResponse response = httpclient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity, "UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* 发送 POST 请求(HTTP),JSON形式
*
* @param apiUrl
* @param json
* json对象
* @return
*/
public static JSONObject doPost(String apiUrl, JSONObject json) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse resp = null;
JSONObject response = null;
try {
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");// 解决中文乱码问题
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
httpPost.setEntity(stringEntity);
resp = httpClient.execute(httpPost);
HttpEntity entity = resp.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
System.out.println("HttpUtils 的doPost请求 : " httpStr);
response = JSONObject.fromObject(httpStr);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (resp != null) {
try {
EntityUtils.consume(resp.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response;
}
public static String doPost2(String apiUrl, List<BasicNameValuePair> listParams) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;
try {
httpPost.setConfig(requestConfig);
//StringEntity stringEntity = new StringEntity(xml, "UTF-8");// 解决中文乱码问题
UrlEncodedFormEntity urlFormEntity = new UrlEncodedFormEntity(listParams);
httpPost.setEntity(urlFormEntity);
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return httpStr;
}
/**
* 发送 POST 请求(HTTP),JSON形式 ,带身份令牌的head
*
* @param apiUrl
* @param json
* @param token
* @return
*/
public static JSONObject doPost(String apiUrl, JSONObject json, String token) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse resp = null;
JSONObject response = null;
try {
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");// 解决中文乱码问题
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
httpPost.setEntity(stringEntity);
httpPost.setHeader("X-Auth-Token", token);
resp = httpClient.execute(httpPost);
System.out.println("resp: " resp);
HttpEntity entity = resp.getEntity();
if (entity == null || entity.getContentLength() <= 0) {
response = new JSONObject();
response.put("state", "删除成功!");
} else {
httpStr = EntityUtils.toString(entity, "UTF-8");
response = JSONObject.fromObject(httpStr);
System.out.println("httpStr: " httpStr);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (resp != null) {
try {
EntityUtils.consume(resp.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response;
}
/**
* 发送 POST 请求(HTTP),JSON形式 ,带身份令牌的head,但没有返回值
*
* @param apiUrl
* @param json
* @param token
* @return
*/
public static void doPost(String apiUrl, String token, JSONObject json) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(apiUrl);
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");// 解决中文乱码问题
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
httpPost.setEntity(stringEntity);
httpPost.setHeader("X-Auth-Token", token);
try {
CloseableHttpResponse execute = httpClient.execute(httpPost);
HttpEntity httpEntity = execute.getEntity();
System.out.println("httpEntity:" httpEntity);
} catch (IOException e) {
e.printStackTrace();
}
httpPost.abort();
}
public static void doPost(String apiUrl, String token) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;
try {
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(token, "UTF-8");// 解决中文乱码问题
httpPost.setEntity(stringEntity);
System.out.println(stringEntity);
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
System.out.println("httpStr: " httpStr);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static String doPost2(String apiUrl, JSONObject json, String token) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse resp = null;
try {
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");// 解决中文乱码问题
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
httpPost.setEntity(stringEntity);
httpPost.setHeader("X-Auth-Token", token);
resp = httpClient.execute(httpPost);
HttpEntity entity = resp.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (resp != null) {
try {
System.out.println("45");
EntityUtils.consume(resp.getEntity());
} catch (IOException e) {
System.out.println("66");
e.printStackTrace();
}
}
}
return httpStr;
}
public static String doPost2(String apiUrl, String xml) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPost httpPost = new HttpPost(apiUrl);
CloseableHttpResponse response = null;
try {
httpPost.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(xml, "UTF-8");// 解决中文乱码问题
httpPost.setEntity(stringEntity);
System.out.println(stringEntity);
response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (response != null) {
try {
EntityUtils.consume(response.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return httpStr;
}
/**
* 发送 PUT 请求(HTTP),JSON形式 ,带身份令牌的head
*
* @param apiUrl
* @param json
* @param token
* @return
*/
public static JSONObject doPut(String apiUrl, String token, JSONObject json) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPut httpPut = new HttpPut(apiUrl);
CloseableHttpResponse resp = null;
JSONObject response = null;
try {
httpPut.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");// 解决中文乱码问题
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
httpPut.setEntity(stringEntity);
httpPut.setHeader("X-Auth-Token", token);
resp = httpClient.execute(httpPut);
System.out.println("resp: " resp);
HttpEntity entity = resp.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
response = JSONObject.fromObject(httpStr);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (resp != null) {
try {
EntityUtils.consume(resp.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response;
}
public static JSONObject doPut(String apiUrl, String token) {
CloseableHttpClient httpClient = HttpClients.createDefault();
String httpStr = null;
HttpPut httpPut = new HttpPut(apiUrl);
CloseableHttpResponse resp = null;
JSONObject response = null;
try {
httpPut.setConfig(requestConfig);
StringEntity stringEntity = new StringEntity(token.toString(), "UTF-8");// 解决中文乱码问题
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
httpPut.setEntity(stringEntity);
httpPut.setHeader("X-Auth-Token", token);
resp = httpClient.execute(httpPut);
HttpEntity entity = resp.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
response = JSONObject.fromObject(httpStr);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (resp != null) {
try {
EntityUtils.consume(resp.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response;
}
/**
* 发送 DELETE 请求(HTTP),JSON形式 ,带身份令牌的head
*
* @param url
* @param token
*/
public static void deleteCloud(String url, String token) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpDelete httpDelete = new HttpDelete(url);
CloseableHttpResponse resp = null;
httpDelete.setConfig(requestConfig);
try {
httpDelete.setHeader("X-Auth-Token", token);
resp = httpClient.execute(httpDelete);
System.out.println(resp);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (resp != null) {
try {
EntityUtils.consume(resp.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 发送 DELETE 请求(HTTP),JSON形式 ,带身份令牌的head
*
* @param url
* @param token
* @return
*/
public static JSONObject doDelete(String url, String token) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpDelete httpDelete = new HttpDelete(url);
CloseableHttpResponse resp = null;
httpDelete.setConfig(requestConfig);
String httpStr = null;
JSONObject jsonObject = null;
try {
httpDelete.setHeader("X-Auth-Token", token);
resp = httpClient.execute(httpDelete);
HttpEntity entity = resp.getEntity();
if (entity == null || entity.getContentLength() == 0) {
jsonObject = new JSONObject();
jsonObject.put("state", "删除成功!");
} else {
httpStr = EntityUtils.toString(entity, "UTF-8");
jsonObject = JSONObject.fromObject(httpStr);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (resp != null) {
try {
EntityUtils.consume(resp.getEntity());
resp.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return jsonObject;
}
/**
* 发送 DELETE 请求(HTTP),
*
* @param url
* @param token
* @return
*/
public static JSONObject delete(String url, String token) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpDelete httpDelete = new HttpDelete(url);
CloseableHttpResponse resp = null;
httpDelete.setConfig(requestConfig);
String httpStr = null;
JSONObject jsonObject = null;
try {
httpDelete.setHeader("X-Auth-Token", token);
resp = httpClient.execute(httpDelete);
HttpEntity entity = resp.getEntity();
if (entity == null) {
jsonObject = null;
} else {
httpStr = EntityUtils.toString(entity, "UTF-8");
jsonObject = JSONObject.fromObject(httpStr);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (resp != null) {
try {
EntityUtils.consume(resp.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
}
}
return jsonObject;
}
/**
* 创建
*
* @param url
* 请求url
* @param json
* 请求参数
* @param autho
* 认证value
* @return
*/
public static JSONObject doPostNat(String url, JSONObject json, String autho) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
// 设置请求配置
post.setConfig(requestConfig);
// 设置请求头
post.setHeader("Authorization", autho);
// 设置请求体
StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8");// 解决中文乱码问题
stringEntity.setContentEncoding("UTF-8");
stringEntity.setContentType("application/json");
post.setEntity(stringEntity);
try {
CloseableHttpResponse execute = httpClient.execute(post);
HttpEntity entity = execute.getEntity();
String string = EntityUtils.toString(entity, "UTF-8");
System.out.println("大伟哥返回结果集" string);
return JSONObject.fromObject(string);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* nat64的查询
*
* @param url
* @param ipv4Str
* @param autho
* @return
*/
public static JSONObject doGetNat(String url, String ipv4Str, String autho) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet post = new HttpGet(url "/" ipv4Str);
// 设置请求配置
post.setConfig(requestConfig);
// 设置请求头
post.setHeader("Authorization", autho);
CloseableHttpResponse execute;
try {
execute = httpClient.execute(post);
HttpEntity entity = execute.getEntity();
String string = EntityUtils.toString(entity);
return JSONObject.fromObject(string);
} catch (ClientProtocolException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* 删除nat
*
* @param url
* 请求路径
* @param ipStr
* 删除的IP值
* @param autho
* 认证值
* @return
*/
public static JSONObject doDeleteNat(String url, String ipStr, String autho) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpDelete delete = new HttpDelete(url "/" ipStr);
delete.setConfig(requestConfig);
delete.setHeader("Authorization", autho);
try {
CloseableHttpResponse execute = httpClient.execute(delete);
HttpEntity entity = execute.getEntity();
String string = EntityUtils.toString(entity);
System.out.println("删除浮动ip策略返回结果集" string);
return JSONObject.fromObject(string);
} catch (ClientProtocolException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* 建立ssl连接时应用
*
* @return
*/
// private static CloseableHttpClient getClient(){
// SSLContext sslcontext = null;
// try {
// sslcontext = SSLContexts.custom().loadTrustMaterial(null, new
// TrustStrategy(){
// public boolean isTrusted(X509Certificate[] chain, String authType) throws
// CertificateException {
// return true;
// }
// }).build();
// } catch (KeyManagementException e) {
// e.printStackTrace();
// } catch (NoSuchAlgorithmException e) {
// e.printStackTrace();
// } catch (KeyStoreException e) {
// e.printStackTrace();
// }
// SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
// sslcontext,
// new String[] { "TLSv1" },
// null,
// SSLConnectionSocketFactory.getDefaultHostnameVerifier());
// CloseableHttpClient httpClient
// =HttpClients.custom().setSSLSocketFactory(sslsf).build();
// return httpClient;
// }
}