I am trying to create a https connection and its working fine in a test class.but when i call the same method in action class its getting following error after step 666666666666.

java.net.SocketException at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:8) at com.ibm.net.ssl.www2.protocol.https.b.afterConnect(b.java:29) at com.ibm.net.ssl.www2.protocol.https.c.connect(c.java:34) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:943) at com.ibm.net.ssl.www2.protocol.https.a.getInputStream(a.java:13)

the method is following.

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;
}
link|improve this question

62% accept rate
feedback

2 Answers

What is the text of the SocketException?

link|improve this answer
what you mean by text??? – AutoMEta Sep 28 '10 at 8:26
The SocketException comes with a message. It is printed along with the stack trace. – EJP Sep 28 '10 at 8:56
feedback
up vote 0 down vote accepted

call trustAllHttpsCertificates() before HostnameVerifier hv = new HostnameVerifier() and it ll work

package com.americanexpress.mobl.centurion.app.util;

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

public class miTM implements 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() throws Exception{ 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()); }

}

link|improve this answer
feedback

Your Answer

 
or
required, but never shown
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.