写一段适配多协议的java 代码
以下是一段适配多协议的Java代码,可以同时支持HTTP和HTTPS协议:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class MultiProtocolAdapter {
private static final int HTTP_TIMEOUT = 5000; // 5 seconds
public static String sendRequest(String urlString) throws IOException {
URL url = new URL(urlString);
if (url.getProtocol().equalsIgnoreCase("https")) {
return sendHttpsRequest(url);
} else if (url.getProtocol().equalsIgnoreCase("http")) {
return sendHttpRequest(url);
} else {
throw new IllegalArgumentException("Unsupported protocol: " + url.getProtocol());
}
}
private static String sendHttpRequest(URL url) throws IOException {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(HTTP_TIMEOUT);
connection.setReadTimeout(HTTP_TIMEOUT);
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
connection.disconnect();
return response.toString();
}
private static String sendHttpsRequest(URL url) throws IOException {
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[] { new X509TrustManager() {
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
} }, new java.security.SecureRandom());
connection.setSSLSocketFactory(sslContext.getSocketFactory());
connection.setHostnameVerifier((hostname, session) -> true);
connection.setRequestMethod("GET");
connection.setConnectTimeout(HTTP_TIMEOUT);
connection.setReadTimeout(HTTP_TIMEOUT);
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
connection.disconnect();
return response.toString();
}
}
该代码包括一个名为sendRequest的静态方法,它接受一个URL字符串作为参数并返回该URL的响应字符串。该方法首先检查URL的协议,然后选择适当的请求方法(sendHttpRequest或sendHttpsRequest)来发送请求。sendHttpRequest方法使用HttpURLConnection发送HTTP GET请求,而sendHttpsRequest方法使用HttpsURLConnection发送HTTPS GET请求,使用一个自定义的信任管理器来绕过证书验证。
原文地址: https://www.cveoy.top/t/topic/b3t8 著作权归作者所有。请勿转载和采集!