java.net.SocketException при создании соединения https, javax.net.ssl.DefaultSSLSocketFactory.createSocket - PullRequest
0 голосов
/ 28 сентября 2010

Я пытаюсь создать https-соединение и оно нормально работает в тестовом классе. Но когда я вызываю тот же метод в классе действия, после шага 666666666666 появляется ошибка.

java.net.SocketException atjavax.net.ssl.DefaultSSLSocketFactory.createSocket (SSLSocketFactory.java:8) по адресу com.ibm.net.ssl.www2.protocol.https.b.afterConnect (b.java:29) по адресу com.ibm.net.ssl.www2.protocol.https.c.connect (c.java:34) в sun.net.www.protocol.http.HttpURLConnection.getInputStream (HttpURLConnection.java:943) в com.ibm.net.ssl.www2.protocol.https.a.getInputStream (a.java:13)

метод следующий.

public static String logOn (String reqXML) {

    String responseXml="";
    try {
        JConfigUtil configuratorTest = JConfigUtil.getInstance();
        String LogOn_URL = configuratorTest.getProperty(CenturionConst.Centurion,CenturionConst.LogOnService_URL);
    //  System.out.println("Log On URL :"+LogOn_URL);
        String param = URLEncoder.encode(reqXML,"UTF8");
        String inputUrl=LogOn_URL+param;
        System.out.println("11111111111111111");
        System.setProperty("javax.net.ssl.trustStore", CERT_FILE_LOC);

        System.out.println("22222222222222222");

        HostnameVerifier hv = new HostnameVerifier() {
            public boolean verify(String urlHostName, SSLSession session) {
                System.out.println("Warning: URL Host: "+urlHostName+" vs. "+session.getPeerHost());
                return true;
            }
        };
        System.out.println("33333333333333333");
        HttpsURLConnection.setDefaultHostnameVerifier(hv);
        System.out.println("444444444444444444");
        System.out.println(inputUrl);
        URL url = new URL(inputUrl);
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        System.out.println("555555555555555555");
        connection.setDoOutput(true);
        System.out.println("6666666666666666666");
        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;
        System.out.println("77777777777777777777");
        while ((line = in.readLine()) != null) {
            responseXml=responseXml+line;
            }
        in.close();
        System.out.println("8888888888888888888888");
    }  catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return responseXml;
}

1 Ответ

0 голосов
/ 05 октября 2010

вызовите trustAllHttpsCertificates () перед HostnameVerifier hv = new HostnameVerifier (), и он будет работать

пакет com.americanexpress.mobl.centurion.app.util;

import java.security.cert.CertificateException; import java.security.cert.X509Certificate;

открытый класс miTM реализует javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {

public void checkClientTrusted(X509Certificate[] certs, String authType)
        throws CertificateException {
    // TODO Auto-generated method stub
    return;
}

public void checkServerTrusted(X509Certificate[] certs, String authType)
        throws CertificateException {
    // TODO Auto-generated method stub
    return;
}

public X509Certificate[] getAcceptedIssuers() {
    // TODO Auto-generated method stub
    return null;
} 
public boolean isClientTrusted(java.security.cert.X509Certificate[] certs)
{
    return true;
    }
public boolean isServerTrusted(java.security.cert.X509Certificate[] certs)
{
    return true;
    }

public static void trustAllHttpsCertificates () создает исключение { javax.net.ssl.TrustManager [] trustAllCerts = new javax.net.ssl.TrustManager [1]; javax.net.ssl.TrustManager tm = new miTM (); trustAllCerts [0] = tm; javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance ("SSL"); sc.init (null, trustAllCerts, null); javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory (sc.getSocketFactory ()); } * +1010 *

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...