mohammadsami / ksoap2-android

Automatically exported from code.google.com/p/ksoap2-android
0 stars 0 forks source link

KPCS12 and Ksoap2 #201

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago

The certificate KPCS12 is compatible with Ksoap2? the following code does not 
work , returns the error:

IOException e:
SSL handshake aborted: ssl=0x7a69ed90: I/O error during system call, Connection 
reset by peer

Code:

private SSLSocketFactory getSSLSocketFactory() throws KeyStoreException, 
NoSuchAlgorithmException, KeyManagementException {

    KeyStore trusted = KeyStore.getInstance("PKCS12");

    AssetManager assetManager = getAssets();
    InputStream in = null;

    try {
        in = assetManager.open("certificate.p12");
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    try {
        trusted.load(in, "blablabla".toCharArray());
    } catch (CertificateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        try {
            in.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
    tmf.init(trusted);
    SSLContext context = SSLContext.getInstance("SSLv3");
    context.init(null, tmf.getTrustManagers(), null);
    return context.getSocketFactory();
}

public String SendRecieveMessage(SoapObject xmlData, String nameXML, String 
methodName, String methodAction) {

    HttpsTransportSE httpTransport = new KeepAliveHttpsTransportSE("hostname", 8443, "/blablabla/blablabla?wsdl", 1000);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    SoapObject request = new SoapObject(activity.getResources().getString(R.string.SOAP_NAMESPACE), methodName); // set

    envelope.setOutputSoapObject(xmlData); 
    try {
        ((HttpsServiceConnectionSE) httpTransport.getServiceConnection()).setSSLSocketFactory(getSSLSocketFactory());
    } catch (KeyManagementException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (KeyStoreException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (NoSuchAlgorithmException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    SoapPrimitive result = null;
    try {
        httpTransport.call(methodAction, envelope);
        result = (SoapPrimitive) envelope.getResponse(); 
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.e("ERROR", "SOAPSendRecieve: " + e.getMessage());    // <!-------------------- Error exception this here
    } catch (XmlPullParserException e) {
        // TODO Auto-generated catch block
        Log.e("ERROR", "SOAPSendRecieve: " + e.getMessage());
    } catch (IllegalArgumentException e) {
        Log.e("ERROR", "SOAPSendRecieve: " + e.getMessage());
        }
    } finally {
        request = null;
        result = null;
    }
    return result;
}

Original issue reported on code.google.com by r.ja...@gmail.com on 4 Dec 2014 at 2:44