Controllo di nuovo questo problema, ho scoperto una soluzione più pulita per me. Non è necessaria alcuna modifica dei file KSOAP2.
Nel progetto, collegare ksoap2-android-assembly-3.0.0-jar
, senza modifiche.
successivo, creare un file denominato SSLConnection.java
con questo codice:
package com.example.mypackage;
import android.util.Log;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
public class SSLConection {
private static TrustManager[] trustManagers;
public static class _FakeX509TrustManager implements javax.net.ssl.X509TrustManager {
private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[]{};
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return (_AcceptedIssuers);
}
}
public static void allowAllSSL() {
javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
javax.net.ssl.SSLContext context;
if (trustManagers == null) {
trustManagers = new TrustManager[]{new _FakeX509TrustManager()};
}
try {
context = javax.net.ssl.SSLContext.getInstance("TLS");
context.init(null, trustManagers, new SecureRandom());
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
} catch (NoSuchAlgorithmException e) {
Log.e("allowAllSSL", e.toString());
} catch (KeyManagementException e) {
Log.e("allowAllSSL", e.toString());
}
}
}
E basta chiamare al SSLConection.allowAllSSL();
prima di chiamare un metodo server tramite KSOAP2. È tutto, funziona per me. Tutti i certificati SSL sono accettati e posso usare KSOAP2 con il protocollo https.
@Zirael ... Grazie per il vostro aiuto è stato utile ... ero ansioso di sapere piuttosto che lavorare in giro se avessi il certificato di sicurezza ... come posso procedere ulteriormente con esso ..? –
Impossibile trovare i sorgenti di ksoap usando il link fornito - è rotto. = \ aggiornamento: ho trovato ... basta usare: https: //github.com/mosabua/ksoap2-android/ – micyunu