Kiểm tra lại vấn đề này, tôi đã khám phá ra một giải pháp sạch hơn đối với tôi. Không cần sửa đổi tệp KSOAP2.
Trong dự án của bạn, liên kết ksoap2-android-assembly-3.0.0-jar
, không có sửa đổi.
Tiếp theo, tạo một file có tên SSLConnection.java
với mã này:
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());
}
}
}
Và chỉ cần gọi đến SSLConection.allowAllSSL();
trước khi gọi một phương pháp máy chủ thông qua KSOAP2. Đó là tất cả, làm việc cho tôi. Tất cả các chứng chỉ SSL đều được chấp nhận và tôi có thể sử dụng KSOAP2 với giao thức https.
@Zirael ... Cảm ơn bạn đã anwser ur nó đã giúp ... Tôi đã háo hức muốn biết hơn là làm việc xung quanh nếu có chứng chỉ bảo mật ... Làm thế nào để tôi tiến xa hơn với nó ..? –
Không thể tìm thấy nguồn gốc của ksoap bằng liên kết được cung cấp - liên kết bị hỏng. = \ cập nhật: Tôi đã tìm thấy nó ... chỉ cần sử dụng: https: //github.com/mosabua/ksoap2-android/ – micyunu