httpclient调用https
时间: 2023-10-06 15:08:57 浏览: 88
要使用 Apache HttpClient 调用 HTTPS,需要进行以下步骤:
1. 创建 HttpClient 对象,可以使用 HttpClientBuilder 类来创建。
2. 创建 SSLContext 对象,并设置 SSL/TLS 协议和证书信任管理器。
3. 创建 HostnameVerifier 对象,用于验证服务器主机名。
4. 创建 HttpGet 或HttpPost 对象。
5. 调用 HttpClient.execute() 方法执行请求。
以下是一个简单示例代码:
```
import org.apache.http.HttpEntity;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.ssl.SSLContextBuilder;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
public class HttpsClientExample {
public static void main(String[] args) throws IOException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
SSLContext sslContext = new SSLContextBuilder()
.loadTrustMaterial(null, (certificate, authType) -> true)
.build();
HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE;
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);
HttpClient httpClient = HttpClientBuilder.create()
.setSSLSocketFactory(socketFactory)
.build();
HttpGet request = new HttpGet("https://www.example.com");
HttpEntity entity = httpClient.execute(request).getEntity();
if (entity != null) {
try (InputStream inputStream = entity.getContent()) {
// 处理响应
}
}
}
}
```
在上面的示例中,我们创建了一个 SSLContext 对象,并使用 NoopTrustManager 来忽略证书验证。然后,我们创建了一个 SSLConnectionSocketFactory 对象,并将其用于创建 HttpClient 对象。
最后,我们创建了一个 HttpGet 对象,并使用 HttpClient.execute() 方法来执行请求。
阅读全文