phonegap 解决https访问问题

对于还没购买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);
		    }
	}
}

SSLAcceptingCordovaWebViewClient:


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);
	        //}
	    }
}

SSLAcceptingIceCreamCordovaWebViewClient.java,名字有点长,网上参考下来的,也懒得去改了:


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();
    }
}



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值