对于还没购买SSL证书的域名,在app端访通过https访问的时候是无法访问成功的,解决办法是在你程序的主activity里重写makeWebViewClient方法,返回我们自己定义的CordovaWebViewClient,在我们自己定义的CordovaWebViewClient 继承CordovaWebViewClient,然后重写onReceivedSslError方法,方法里直接“ handler.proceed();”,不处理错误,代码如下:
main.java,友盟继承的可以不用看:
public class main extends CordovaActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); UmengUpdateAgent.setUpdateOnlyWifi(false); UmengUpdateAgent.update(this); super.init(); // Set by <content src="index.html" /> in config.xml super.loadUrl(Config.getStartUrl()); //super.loadUrl("file:///android_asset/www/index.html") } @Override protected CordovaWebViewClient makeWebViewClient(CordovaWebView webView) { // TODO Auto-generated method stub if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { return new SSLAcceptingCordovaWebViewClient(this, webView); } else { return new SSLAcceptingIceCreamCordovaWebViewClient(this, webView); } } }
import org.apache.cordova.CordovaInterface; import org.apache.cordova.CordovaWebView; import org.apache.cordova.CordovaWebViewClient; import org.apache.cordova.DroidGap; import android.net.http.SslError; import android.webkit.SslErrorHandler; import android.webkit.WebView; public class SSLAcceptingCordovaWebViewClient extends CordovaWebViewClient{ public SSLAcceptingCordovaWebViewClient(CordovaInterface cordova, CordovaWebView view) { super(cordova, view); // TODO Auto-generated constructor stub } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { // testing against getPrimaryError() or hasErrors() will fail on Honeycomb or older. // You might check for something different, such as specific info in the certificate, //if (error.getPrimaryError() == SslError.SSL_IDMISMATCH) { handler.proceed(); //} else { // super.onReceivedSslError(view, handler, error); //} } }
import org.apache.cordova.CordovaInterface; import org.apache.cordova.CordovaWebView; import org.apache.cordova.IceCreamCordovaWebViewClient; import android.net.http.SslError; import android.webkit.SslErrorHandler; import android.webkit.WebView; 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(); } }
phonegap 解决https访问问题,布布扣,bubuko.com
原文:http://blog.csdn.net/linshutao/article/details/22646755