ksoap2 HttpsTransportSE: no funciona con el certificado
¿Alguien ha resuelto este problema por no hacer una cara TrustManager ????
En serio, todas las respuestas son "oh usar un TrustManager falso y confiar en todos los certificados".
- Excepción de puntero nulo que hace difícil pasar un arreglo usando ksoap
- Cómo llamar a un Webservice .NET de Android usando KSOAP2?
- Almacenar cadena codificada en base64 como archivo
- Error en la autenticación al suscribirse a un servicio web sharepoint usando ksoap2-android
- Análisis de la respuesta compleja del jabón
Tengo un certificado de la CA de la raíz que debo utilizar para conectar con el servidor.
Configurar un SSLContext y usarlo a través de HttpsURLConnection funciona perfectamente, pero cuando trato de usarlo con ksoap (HttpsTransportSE), me mantiene dando SSLHandshakeException.
Estoy usando ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar, alguien sabe si hay algún problema con esa versión?
Aquí está mi código:
CertificateFactory cf = CertificateFactory.getInstance("X.509"); ca = cf.generateCertificate(caInput); System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN()); // Create a KeyStore containing our trusted CAs String keyStoreType = KeyStore.getDefaultType(); KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(null, null); keyStore.setCertificateEntry("ca", ca); caInput = this.getResources().openRawResource(R.raw.i1); java.security.cert.Certificate ci1; ci1 = cf.generateCertificate(caInput); System.out.println("i1=" + ((X509Certificate) ci1).getSubjectDN()); keyStore.setCertificateEntry("ci1", ci1); // Create a TrustManager that trusts the CAs in our KeyStore String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); TrustManagerFactory tmf = TrustManagerFactory .getInstance(tmfAlgorithm); tmf.init(keyStore); // Create an SSLContext that uses our TrustManager SSLContext context = SSLContext.getInstance("TLS"); context.init(null, tmf.getTrustManagers(), null); URI u = URI.create("https://myurl/services/myservice"); SoapObject client = new SoapObject("", "dummy"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.bodyOut = client; HttpsTransportSE ht = new HttpsTransportSE(u.getHost(), u.getPort(), u.getPath(), 10000); ((HttpsServiceConnectionSE) ht.getServiceConnection()).setSSLSocketFactory(context.getSocketFactory()); ht.call("", envelope);
Muchas gracias por adelantado por cualquier cualquier ayuda, cualquier cosa ….
- Android, Ksoap, webService
- Java.io.IOException: Error en la solicitud HTTP, estado HTTP: 500 (ksoap2)
- Advertencia: Ignorar el atributo InnerClasses para una clase interna anónima (org.ksoap2.transport.KeepAliveHttpsTransportSE $ 1)
- Cuándo usar Soapobject y SoapPrimitive
- Cómo llamar a un servicio web local desde una aplicación móvil de Android
- Cómo recuperar array de objetos como resultado del servicio web KSOAP en Android?
- Servicio Web recibe parámetros nulos de la aplicación utilizando el método ksoap
- Eliminación del campo i: type en la solicitud SOAP generada por kSoap2 en Android