|
@ -1,366 +0,0 @@
|
|
|
package com.yihu.hos.core.httpclient;
|
|
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import org.apache.http.Header;
|
|
|
import org.apache.http.HttpEntity;
|
|
|
import org.apache.http.NameValuePair;
|
|
|
import org.apache.http.client.entity.GzipDecompressingEntity;
|
|
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
|
|
import org.apache.http.client.methods.HttpGet;
|
|
|
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
|
|
import org.apache.http.entity.ContentType;
|
|
|
import org.apache.http.impl.client.CloseableHttpClient;
|
|
|
import org.apache.http.impl.client.HttpClients;
|
|
|
import org.apache.http.util.EntityUtils;
|
|
|
|
|
|
import java.io.*;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.zip.GZIPInputStream;
|
|
|
|
|
|
public class HttpHelper {
|
|
|
public static String defaultHttpUrl;
|
|
|
public static String clientId;
|
|
|
public static String clientKey;
|
|
|
public static String httpGateway;
|
|
|
private static String defaultPropertiesPath = "config/http.properties";
|
|
|
private static SSLConnectionSocketFactory defaultSSL;
|
|
|
private static String defaultHttpUser;
|
|
|
private static String defaultHttpPassword;
|
|
|
|
|
|
static {
|
|
|
// //默认配置
|
|
|
// try {
|
|
|
// Resource resource = new ClassPathResource(defaultPropertiesPath);
|
|
|
// EncodedResource encRes = new EncodedResource(resource, "UTF-8");
|
|
|
// Properties props = PropertiesLoaderUtils.loadProperties(encRes);
|
|
|
//
|
|
|
// defaultHttpUrl = props.getProperty("httpUrl");
|
|
|
// defaultHttpUser = props.getProperty("httpUser");
|
|
|
// defaultHttpPassword = props.getProperty("httpPassword");
|
|
|
// clientId = props.getProperty("clientId");
|
|
|
// clientKey = props.getProperty("clientKey");
|
|
|
// httpGateway = props.getProperty("httpGateway");
|
|
|
// String sslKeystore = props.getProperty("sslKeystore");
|
|
|
// String sslPassword = props.getProperty("sslPassword");
|
|
|
// if (StringUtil.isEmpty(sslKeystore)) {
|
|
|
// String home = System.getProperty("catalina.home").replace('\\', '/');
|
|
|
// String homeUrl = home.substring(0, home.lastIndexOf('/') + 1);
|
|
|
// // sslKeystore = homeUrl + "tomcat.keystore";
|
|
|
// sslKeystore = "E://tomcat.keystore";
|
|
|
// }
|
|
|
// if (sslKeystore != null && sslKeystore.length() > 0 && sslPassword != null && sslPassword.length() > 0) {
|
|
|
// SSLContext sslContext = SSLContexts.custom()
|
|
|
// .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(),
|
|
|
// new TrustSelfSignedStrategy())
|
|
|
// .build();
|
|
|
// defaultSSL = new SSLConnectionSocketFactory(
|
|
|
// sslContext,
|
|
|
// new String[]{"TLSv1"},
|
|
|
// null,
|
|
|
// SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
|
|
// }
|
|
|
//
|
|
|
// } catch (Exception e) {
|
|
|
// System.out.print(e.getMessage());
|
|
|
// }
|
|
|
|
|
|
}
|
|
|
|
|
|
/**************************
|
|
|
* Get方法
|
|
|
******************************************/
|
|
|
public static HttpResponse get(String url) {
|
|
|
return get(url, null, null);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse get(String url, Map<String, Object> params) {
|
|
|
return get(url, params, null);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse get(String url, Map<String, Object> params, Map<String, Object> header) {
|
|
|
if (url.startsWith("https")) {
|
|
|
return get(url, params, header, defaultSSL);
|
|
|
} else {
|
|
|
//默认http不走ssl和用户密码
|
|
|
return get(url, params, header, null, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse get(String url, Map<String, Object> params, Map<String, Object> header, Boolean isCheck) {
|
|
|
if (isCheck) {
|
|
|
return get(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
|
|
|
} else {
|
|
|
return get(url, params, header, null, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse get(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl) {
|
|
|
return get(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse get(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl, String user, String password) {
|
|
|
|
|
|
return HttpClientUtil.request("GET", url, params, header, ssl, user, password);
|
|
|
}
|
|
|
|
|
|
/**************************
|
|
|
* Post方法
|
|
|
******************************************/
|
|
|
public static HttpResponse post(String url) {
|
|
|
return post(url, null, null);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse post(String url, Map<String, Object> params) {
|
|
|
return post(url, params, null);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse post(String url, Map<String, Object> params, Map<String, Object> header) {
|
|
|
if (url.startsWith("https")) {
|
|
|
return post(url, params, header, defaultSSL);
|
|
|
} else {
|
|
|
//默认http不走ssl和用户密码
|
|
|
return post(url, params, header, null, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse post(String url, Map<String, Object> params, Map<String, Object> header, Boolean isCheck) {
|
|
|
if (isCheck) {
|
|
|
return post(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
|
|
|
} else {
|
|
|
return post(url, params, header, null, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse post(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl) {
|
|
|
return post(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse post(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl, String user, String password) {
|
|
|
return HttpClientUtil.request("POST", url, params, header, ssl, user, password);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse postFile(String url, List<NameValuePair> formParams, String filePath, Map<String, Object> header) {
|
|
|
File file = new File(filePath);
|
|
|
if (url.startsWith("https")) {
|
|
|
return HttpClientUtil.postFile(url, file, formParams, defaultSSL, defaultHttpUser, defaultHttpPassword, header);
|
|
|
} else {
|
|
|
//默认http不走ssl和用户密码
|
|
|
return HttpClientUtil.postFile(url, file, formParams, null, defaultHttpUser, defaultHttpPassword, header);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse postFile(String url, List<NameValuePair> formParams, File file, Map<String, Object> header) {
|
|
|
if (url.startsWith("https")) {
|
|
|
return HttpClientUtil.postFile(url, file, formParams, defaultSSL, defaultHttpUser, defaultHttpPassword, header);
|
|
|
} else {
|
|
|
//默认http不走ssl和用户密码
|
|
|
return HttpClientUtil.postFile(url, file, formParams, null, defaultHttpUser, defaultHttpPassword, header);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**************************
|
|
|
* Put方法
|
|
|
******************************************/
|
|
|
public static HttpResponse put(String url) {
|
|
|
return put(url, null, null);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse put(String url, Map<String, Object> params) {
|
|
|
return put(url, params, null);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse put(String url, Map<String, Object> params, Map<String, Object> header) {
|
|
|
if (url.startsWith("https")) {
|
|
|
return put(url, params, header, defaultSSL);
|
|
|
} else {
|
|
|
//默认http不走ssl和用户密码
|
|
|
return put(url, params, header, null, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse put(String url, Map<String, Object> params, Map<String, Object> header, Boolean isCheck) {
|
|
|
if (isCheck) {
|
|
|
return put(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
|
|
|
} else {
|
|
|
return put(url, params, header, null, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse put(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl) {
|
|
|
return put(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse put(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl, String user, String password) {
|
|
|
|
|
|
return HttpClientUtil.request("PUT", url, params, header, ssl, user, password);
|
|
|
}
|
|
|
|
|
|
/**************************
|
|
|
* Delete方法
|
|
|
**************************************/
|
|
|
public static HttpResponse delete(String url) {
|
|
|
return delete(url, null, null);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse delete(String url, Map<String, Object> params) {
|
|
|
return delete(url, params, null);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse delete(String url, Map<String, Object> params, Map<String, Object> header) {
|
|
|
if (url.startsWith("https")) {
|
|
|
return delete(url, params, header, defaultSSL);
|
|
|
} else {
|
|
|
//默认http不走ssl和用户密码
|
|
|
return delete(url, params, header, null, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse delete(String url, Map<String, Object> params, Map<String, Object> header, Boolean isCheck) {
|
|
|
if (isCheck) {
|
|
|
return delete(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
|
|
|
} else {
|
|
|
return delete(url, params, header, null, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static HttpResponse delete(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl) {
|
|
|
return delete(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
|
|
|
}
|
|
|
|
|
|
public static HttpResponse delete(String url, Map<String, Object> params, Map<String, Object> header, SSLConnectionSocketFactory ssl, String user, String password) {
|
|
|
|
|
|
return HttpClientUtil.request("DELETE", url, params, header, ssl, user, password);
|
|
|
}
|
|
|
|
|
|
/**************************** 通过网关获取数据 ***************************************/
|
|
|
/**
|
|
|
* 通过网关获取数据
|
|
|
*/
|
|
|
public static HttpResponse getByGateway(String code) {
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
params.put("api", code);
|
|
|
params.put("param", "{}");
|
|
|
return HttpClientUtil.request("GET", httpGateway, params, null, null, null, null);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 通过网关获取数据
|
|
|
*/
|
|
|
public static HttpResponse getByGateway(String code, Map<String, Object> queryParams) {
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
ObjectMapper mapper = new ObjectMapper();
|
|
|
params.put("api", code);
|
|
|
String query = null;
|
|
|
try {
|
|
|
query = mapper.writeValueAsString(queryParams);
|
|
|
} catch (JsonProcessingException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
params.put("param",query);
|
|
|
return HttpClientUtil.request("GET", httpGateway, params, null, null, null, null);
|
|
|
}
|
|
|
|
|
|
|
|
|
public static String getWebPage(String url) {
|
|
|
String returnString = "";
|
|
|
HttpResponse re = new HttpResponse();
|
|
|
CloseableHttpResponse response = null;
|
|
|
CloseableHttpClient httpclient = HttpClients.custom()
|
|
|
.setSSLSocketFactory(defaultSSL)
|
|
|
.build();
|
|
|
|
|
|
//设置请求信息
|
|
|
try {
|
|
|
HttpGet httpGet = new HttpGet(url);
|
|
|
|
|
|
response = httpclient.execute(httpGet);
|
|
|
String line;
|
|
|
// 读取输入流的数据,并显示
|
|
|
HttpEntity httpEntity = response.getEntity();
|
|
|
Header header = response.getEntity().getContentEncoding();
|
|
|
if (httpEntity.getContentLength() < 2147483647L) { //EntityUtils无法处理ContentLength超过2147483647L的Entity
|
|
|
if (header != null && "gzip".equals(header.getValue())) {
|
|
|
returnString = EntityUtils.toString(new GzipDecompressingEntity(httpEntity));
|
|
|
} else {
|
|
|
returnString = EntityUtils.toString(httpEntity);
|
|
|
}
|
|
|
} else {
|
|
|
InputStream in = httpEntity.getContent();
|
|
|
if (header != null && "gzip".equals(header.getValue())) {
|
|
|
returnString = unZip(in, ContentType.getOrDefault(httpEntity).getCharset().toString());
|
|
|
} else {
|
|
|
returnString = readInStreamToString(in, ContentType.getOrDefault(httpEntity).getCharset().toString());
|
|
|
}
|
|
|
if (in != null) {
|
|
|
in.close();
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
re.setStatusCode(201);
|
|
|
re.setBody(e.getMessage());
|
|
|
e.printStackTrace();
|
|
|
} finally {
|
|
|
try {
|
|
|
httpclient.close();
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
System.out.println(returnString);
|
|
|
return returnString;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 解压服务器返回的gzip流
|
|
|
*
|
|
|
* @param in 抓取返回的InputStream流
|
|
|
* @param charSet 页面内容编码
|
|
|
* @return 页面内容的String格式
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
private static String unZip(InputStream in, String charSet) throws IOException {
|
|
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
|
GZIPInputStream gis = null;
|
|
|
try {
|
|
|
gis = new GZIPInputStream(in);
|
|
|
byte[] _byte = new byte[1024];
|
|
|
int len = 0;
|
|
|
while ((len = gis.read(_byte)) != -1) {
|
|
|
baos.write(_byte, 0, len);
|
|
|
}
|
|
|
String unzipString = new String(baos.toByteArray(), charSet);
|
|
|
return unzipString;
|
|
|
} finally {
|
|
|
if (gis != null) {
|
|
|
gis.close();
|
|
|
}
|
|
|
if (baos != null) {
|
|
|
baos.close();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 读取InputStream流
|
|
|
*
|
|
|
* @param in InputStream流
|
|
|
* @return 从流中读取的String
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
private static String readInStreamToString(InputStream in, String charSet) throws IOException {
|
|
|
StringBuilder str = new StringBuilder();
|
|
|
String line;
|
|
|
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, charSet));
|
|
|
while ((line = bufferedReader.readLine()) != null) {
|
|
|
str.append(line);
|
|
|
str.append("\n");
|
|
|
}
|
|
|
if (bufferedReader != null) {
|
|
|
bufferedReader.close();
|
|
|
}
|
|
|
return str.toString();
|
|
|
}
|
|
|
}
|