HTTPClient 发送HTTP请求就不多说了, 现在给出发送HTTPS请求, 主要思路是忽略证书验证.
/**
*
* @param url
* @param contextType "image/jpeg","application/Json"
* @return
*/
public static byte[] sendHttpsGetUrl(HttpClient httpClient1 ,String url,String contextType) {
// 响应内容
byte[] bs = null;
// 创建默认的httpClient实例
// HttpClient httpClient = new DefaultHttpClient();
HttpClient httpClient = httpClient1;
// 创建TrustManager
X509TrustManager xtm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[] {};
}
};
try {
SSLContext ctx = SSLContext.getInstance("SSL");
// 使用TrustManager来初始化该上下文,TrustManager只是被SSL的Socket所使用
ctx.init(null, new TrustManager[] { xtm }, null);
SSLSocketFactory sf = new SSLSocketFactory(
ctx,
SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme sch = new Scheme("https", 443, sf);
httpClient.getConnectionManager().getSchemeRegistry().register(sch);
// 创建HttpPost
HttpGet httpPost = new HttpGet(url);
httpPost.setHeader("content-type", contextType);
// 执行POST请求
HttpResponse response = httpClient.execute(httpPost);
// 获取响应实体
HttpEntity entity = response.getEntity();
bs = IOUtils.toByteArray(entity.getContent());
if (null != entity) {
EntityUtils.consume(entity); // Consume response content
}
return bs;
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
// httpClient.getConnectionManager().shutdown();
}
return bs;
}
下面给出Maven required:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>