HttpURLConnection 发送https
时间: 2023-08-26 17:04:49 浏览: 37
HttpURLConnection可以用于发送HTTPS请求,只需在建立连接之前,设置一些额外的配置即可。以下是一个示例代码:
```java
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
public class HttpsRequestExample {
public static void main(String[] args) {
try {
// 创建信任所有证书的TrustManager
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
// 创建SSL上下文并初始化
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// 设置默认的SSL Socket工厂
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
// 创建URL对象
URL url = new URL("https://example.com");
// 打开连接
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
// 可选:设置请求头等其他属性
// 发送请求并获取响应
InputStream inputStream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
// 处理响应内容
System.out.println("Response: " + response.toString());
// 关闭连接
connection.disconnect();
} catch (IOException | NoSuchAlgorithmException | KeyManagementException e) {
e.printStackTrace();
}
}
}
```
上述示例中,我们创建了一个信任所有证书的TrustManager,并使用它来初始化SSLContext。然后,我们通过HttpsURLConnection.setDefaultSSLSocketFactory()方法将默认的SSL Socket工厂设置为我们创建的SSL上下文的工厂。接下来,我们创建URL对象并打开连接。在连接打开后,可以设置请求头等其他属性。最后,我们发送请求并获取响应。请注意,此示例中的URL为"https://example.com",你需要替换为你要发送HTTPS请求的实际URL。