/**
* 设置可访问https
* @return
*/
public static CloseableHttpClient createSSLClientDefault() {
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
//信任所有
public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
return true;
}
}).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
return HttpClients.createDefault();
}
public static String doGet(String url, Map<String, String> param,
HeaderParameter parameter) {
// 创建Httpclient对象
CloseableHttpClient httpclient = createSSLClientDefault();//调用createSSLClientDefault
String resultString = "";
CloseableHttpResponse response = null;
try {
// 创建uri
URIBuilder builder = new URIBuilder(url);
if (param != null) {
for (String key : param.keySet()) {
builder.addParameter(key, param.get(key));
}
}
URI uri = builder.build();
// 创建http GET请求
HttpGet httpGet = new HttpGet(uri);
//设置请求头
if (parameter != null) {
httpGet.addHeader("Token", parameter.getToken());
httpGet.addHeader("Sign",parameter.getSign());
httpGet.addHeader("Org_id", parameter.getOrg_id() + "");
httpGet.addHeader("Product_id", parameter.getProduct_id() + "");
httpGet.addHeader("Timestamp", parameter.getTimestamp());
}
// 执行请求
response = httpclient.execute(httpGet);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == 200) {
resultString = EntityUtils.toString(response.getEntity(),
"UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
}
这是为了开发,不去验证SSL证书的写法,因为项目开发中用的是本地的SSL证书,太麻烦了