org.apache.http.impl.client.DefaultHttpClient如何执行https
时间: 2023-09-02 09:05:43 浏览: 164
在使用 `DefaultHttpClient` 执行 `HTTPS` 请求时,需要创建一个 `SSLContext` 实例,并配置它的 `TrustManager` 和 `KeyManager`,然后创建一个 `SSLSocketFactory` 实例,并将其设置到 `DefaultHttpClient` 的 `ClientConnectionManager` 中。
下面是一个示例代码:
```java
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
public class HttpsClientExample {
public static void main(String[] args) throws Exception {
// 创建 SSLContext 实例
SSLContext sslContext = SSLContext.getInstance("TLS");
// 创建 TrustManager
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
// 初始化 SSLContext
sslContext.init(null, new TrustManager[] { trustManager }, new SecureRandom());
// 创建 SSLSocketFactory 实例
SSLSocketFactory sslSocketFactory = new SSLSocketFactory(sslContext);
// 设置 SSLSocketFactory 的 HostnameVerifier
sslSocketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
// 创建 DefaultHttpClient 实例
HttpClient httpClient = new DefaultHttpClient();
// 注册 https 协议
Scheme scheme = new Scheme("https", 443, sslSocketFactory);
httpClient.getConnectionManager().getSchemeRegistry().register(scheme);
// 创建 HttpGet 请求
HttpGet httpGet = new HttpGet("https://www.example.com");
// 执行请求并输出响应结果
System.out.println(httpClient.execute(httpGet).getStatusLine().getStatusCode());
}
}
```
在上面的示例代码中,我们创建了一个 `SSLContext` 实例,并初始化了一个 `TrustManager` 实例,然后创建了一个 `SSLSocketFactory` 实例,并将其设置到 `DefaultHttpClient` 的 `ClientConnectionManager` 中。最后,我们使用 `DefaultHttpClient` 执行了一个 `HTTPS` 请求,并输出了响应结果。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![7z](https://img-home.csdnimg.cn/images/20241231044736.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20210720083447.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)