2010-09-28 7 views
0

J'essaie de créer une connexion https et son fonctionnement dans une classe de test.but quand j'appelle la même méthode dans la classe d'action son obtenir l'erreur suivante après l'étape 666666666666.java.net.SocketException lors de la création de https conenction, javax.net.ssl.DefaultSSLSocketFactory.createSocket

java.net.SocketException à javax.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.httpURLConnection. getInputStream (HttpURLConnection.java:943) at com.ibm.net.ssl.www2.protoc ol.https.a.getInputStream (a.java:13)

la méthode est la suivante.

Chaîne LOGON public static (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; 
} 

Répondre

0

de trustAllHttpsCertificates d'appel() avant HostnameVerifier hv = new HostnameVerifier() et travaillerons

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

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

public class MITM implémente 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; 
    } 

Les trustAllHttpsCertificates public static void() 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()); }

}