1

サーバーで http ポートを無効にした後、https サイトから操作にアクセスしようとしていました。以下のエラーをスローします。httpが有効になっていると、正常に動作します。次に、https を使用してリクエストできます。以下の sslConnection を有効にするためのコードを見つけてください。

public static void enableSSL() throws NoSuchAlgorithmException, KeyManagementException {
     TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {

            @Override
            public void checkClientTrusted(X509Certificate[] chain,
                    String authType) throws CertificateException {
                // TODO Auto-generated method stub

            }

            @Override
            public void checkServerTrusted(X509Certificate[] chain,
                    String authType) throws CertificateException {
                // TODO Auto-generated method stub

            }

            @Override
            public X509Certificate[] getAcceptedIssuers() {
                // TODO Auto-generated method stub
                return null;
            }



        } };
        // Install the all-trusting trust manager
        SSLContext sc = SSLContext.getInstance("SSL");
        // Create empty HostnameVerifier
        HostnameVerifier hv = new HostnameVerifier() {


            @Override
            public boolean verify(String arg0, SSLSession arg1) {
                // TODO Auto-generated method stub
                return true;
            }
        };

        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(hv);

}

以下のエラーを見つけてください

com.sun.xml.ws.client.ClientTransportException: HTTP transport error:
java.net.SocketTimeoutException: connect timed out at 
com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:132) at 
com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:153) at 
com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:94) at 
com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:116) at
com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598) at 
com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557) at
com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542) at 
com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439) at 
com.sun.xml.ws.client.Stub.process(Stub.java:222) at 
com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135) at 
com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109) at 
com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89) at 
com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118) at 
$Proxy32.getStageRoot(Unknown Source) at 
com.hash.aif.client.file.AIFFilePortClient.getStageRoot(AIFFilePortClient.java:57) at 
com.hash.aif.client.AifSSLClient.main(AifSSLClient.java:21) Caused by:
java.net.SocketTimeoutException: connect timed out at 
java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at 
java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at 
java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at 
java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at 
java.net.AbstractPlainSocketImpl.connect(Unknown Source) at 
java.net.PlainSocketImpl.connect(Unknown Source) at 
java.net.SocksSocketImpl.connect(Unknown Source) at 
java.net.Socket.connect(Unknown Source) at 
sun.security.ssl.SSLSocketImpl.connect(Unknown Source) at 
sun.net.NetworkClient.doConnect(Unknown Source) at 
sun.net.www.http.HttpClient.openServer(Unknown Source) at 
sun.net.www.http.HttpClient.openServer(Unknown Source) at 
sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) at 
sun.net.www.protocol.https.HttpsClient.New(Unknown Source) at 
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) at 
sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at 
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) at 
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) at 
sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source) at 
com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:120) ... 15 more
4

1 に答える 1

1

HTTPS は、標準の HTTP (80) とは異なるポート (443) にあります。接続がタイムアウトしているため、サーバーが HTTPS を提供していない (HTTP のみを提供している) か、ファイアウォールの問題によってターゲット マシンのポート 443 にアクセスできない可能性があります。

接続タイムアウトを示すエラー スタックの関連部分を次に示します。

Caused by:
java.net.SocketTimeoutException: connect timed out at 
java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at 
java.net.DualStackPlainSocketImpl.socketConnect(Unknown S
于 2012-06-10T04:39:29.617 に答える