当请求的URL响应错误或自签名证书时,就会发生这种情况。在测试或发布应用程序的朋友,设置
<applicationandroid:debuggable="true"...>在
AndroidManifest.xml是不够的-它会自动绕过证书错误。
但是Google Play商店不接受带有的APK
android:debuggable="true"。首先,当然需要对证书进行固定。但是,在这种情况下,这是PhoneGap / Cordova
3的解决方法:
- 在您的应用包中,为创建一个子类
CordovaWebViewClient
:
public class SSLAcceptingCordovaWebViewClient extends CordovaWebViewClient { public SSLAcceptingCordovaWebViewClient(CordovaInterface cordova, CordovaWebView view) { super(cordova, view); } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } }- 相同
IceCreamCordovaWebViewClient
:
public class SSLAcceptingIceCreamCordovaWebViewClient extends IceCreamCordovaWebViewClient { public SSLAcceptingIceCreamCordovaWebViewClient(CordovaInterface cordova, CordovaWebView view) { super(cordova, view); } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); } }- 在
<Your App Name>.java
添加替代makeWebViewClient
:
@Override protected CordovaWebViewClient makeWebViewClient(CordovaWebView webView) { if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { return new SSLAcceptingCordovaWebViewClient(this, webView); } else { return new SSLAcceptingIceCreamCordovaWebViewClient(this, webView); } }等等! SSL错误将被忽略。但是,切勿使用错误的证书。尝试先修复它们,然后仅在用完其他解决方案时才使用此肮脏的解决方法。



