IntelligentRecognition/ah-jjsp-service/.svn/pristine/fb/fbf693c50ef5301e20610b92cb5...

182 lines
7.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.securityControl.task.util.video;
import com.alibaba.fastjson2.JSONObject;
import com.securityControl.common.core.utils.aes.StringHelper;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.TrustStrategy;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.*;
public class HttpClientUtil {
private static final String CHARSET = "utf-8";
private static final String CONTENT_TYPE_TEXT_JSON = "text/json";
/**
* Header参数
*/
private static final String Authorization = "Authorization";
private static SSLConnectionSocketFactory sslConnectionSocketFactory;
private static RequestConfig config;
/**
* 单例实现token
*/
private String accessToken = null;
private static Logger log = LoggerFactory.getLogger(HttpClientUtil.class);
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public void HttpClientUtils() {
initTrustHosts();
initConfig();
}
private static void initTrustHosts() {
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
return true;
}
}).build();
sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
}catch (Exception e) {
e.getStackTrace();
}
}
private static void initConfig() {
config = RequestConfig.custom().setConnectTimeout(10000000).setSocketTimeout(10000000).build();
}
public String doPost(String url,String token,Map<String,Object> params) {
// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(url);
// 创建json参数
JSONObject jsonObject = new JSONObject();
for (String key:params.keySet()){
jsonObject.put(key,params.get(key));
}
// 模拟表单
//UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
// 将user对象转换为json字符串并放入entity中
StringEntity entity = new StringEntity(jsonObject.toJSONString(), ContentType.APPLICATION_JSON);
// post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中
httpPost.setEntity(entity);
httpPost.setHeader("Content-Type", "application/json;charset=utf8");
httpPost.setHeader(Authorization, "Bearer " + token);
// 响应模型
CloseableHttpResponse response = null;
String result = null;
try {
// 由客户端执行(发送)Post请求
response = httpClient.execute(httpPost);
// 从响应模型中获取响应实体
HttpEntity responseEntity = response.getEntity();
//System.out.println("响应状态为:" + response.getStatusLine());
if (responseEntity != null) {
result = EntityUtils.toString(responseEntity);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 释放资源
if (httpClient != null) {
httpClient.close();
}
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
public static String doHttpPost(String uri, JSONObject jsonObject,String token) {
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
CloseableHttpResponse response = null;
try {
HttpPost httpPost = new HttpPost(uri);
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(10*1000) //连接超时时间
.setConnectionRequestTimeout(6000) //从连接池中取的连接的最长时间
.setSocketTimeout(2*60*1000) //数据传输的超时时间
.build();
//设置请求配置时间
httpPost.setConfig(config);
//装填参数
StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");
s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
//设置参数到请求对象中
httpPost.setEntity(s);
httpPost.setHeader("Content-type", "application/json");
if(StringHelper.isNotEmpty(token)){
httpPost.setHeader("token", token);
}
httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
response = httpClient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("statusCode:" +statusCode );
log.error("statusCode:" +statusCode );
if (HttpStatus.SC_OK == statusCode) {
HttpEntity entity = response.getEntity();
if (null != entity) {
String resStr = EntityUtils.toString(entity, "utf-8");
return resStr;
}
}
} catch (Exception e) {
System.out.println("CloseableHttpClient-post-请求异常:" + e.getMessage()+",case" +String.valueOf(e.getStackTrace()));
} finally {
try {
if (null != response) {
EntityUtils.consume(response.getEntity());
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}