phonegap 解決https訪問問題


ios報錯

在AppDelegate.m文件在最后加入(在@end后面加空行):

@implementation NSURLRequest(DataController) + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host {

   return YES;
} @end

 

 

 

android沒出錯,出錯可以這么解決

main.java,友盟繼承的可以不用看:
[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
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:
[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
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,名字有點長,網上參考下來的,也懶得去改了:
[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
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();  
    }  
}  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM