以下是一段适配多协议的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的协议,然后选择适当的请求方法(sendHttpRequestsendHttpsRequest)来发送请求。sendHttpRequest方法使用HttpURLConnection发送HTTP GET请求,而sendHttpsRequest方法使用HttpsURLConnection发送HTTPS GET请求,使用一个自定义的信任管理器来绕过证书验证。

写一段适配多协议的java 代码

原文地址: https://www.cveoy.top/t/topic/b3t8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录