AJAX请求Cordova / PhoneGap 2.1.0 Android应用程序中的自签名HT
发布时间:2020-12-16 02:48:06 所属栏目:百科 来源:网络整理
导读:我正在尝试实现Chris发现 here提供的解决方法,允许PhoneGap / Cordova构建的Android应用程序向具有自签名SSL证书的服务器发出AJAX HTTPS请求.我正在使用PhoneGap / Cordova 2.1.0,而Chris正在使用1.7.0.我可以毫无问题地创建MyWebViewClient类.但是,当我添加
我正在尝试实现Chris发现
here提供的解决方法,允许PhoneGap / Cordova构建的Android应用程序向具有自签名SSL证书的服务器发出AJAX HTTPS请求.我正在使用PhoneGap / Cordova 2.1.0,而Chris正在使用1.7.0.我可以毫无问题地创建MyWebViewClient类.但是,当我添加这行代码时……
this.setWebViewClient(this.appView,new MyWebViewClient(this)); …到M??ainActivity类’重写的init()方法,我收到此错误:
这是MyWebViewClient.java的代码: package [packagename]; import android.net.http.SslError; import android.webkit.SslErrorHandler; import android.webkit.WebView; import org.apache.cordova.CordovaWebViewClient; import org.apache.cordova.DroidGap; public class MyWebViewClient extends CordovaWebViewClient { public class MyWebViewClient(DroidGap ctx) { super(ctx); } @Override public void onReceivedSslError(WebView view,SslErrorHandler handler,SslError error) { handler.proceed(); } } 这是我的MainActivity.java代码: package [packagename]; import android.os.Bundle; import org.apache.cordova.*; public class MainActivity extends DroidGap { @Override public void init() { super.init(); this.setWebViewClient(this.appView,new MyWebViewClient(this)); // Error occurs here } @Override public void onCreate(bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setBooleanProperty("keeprunning",false); super.loadUrl("file:///android_asset/www/index.html"); } } 我没有足够的声誉,否则我会对Chris的回答发表评论.此外,我不是在寻找一个jQuery解决方案(我已经知道我可以进行$.ajax()调用来避免这个问题,但我试图将jQuery从我的应用程序中删除). 有任何想法吗?非常感谢您的帮助! 编辑:请在回复之前查看我的评论. 解决方法
这可以在以后的Cordova版本中修复如下(我正在使用2.2).如上所述,它在onPageStarted()失败 – 这是因为它期望一个appView,它是null,因此你得到一个NullPointerException.设置appView似乎解决了它,例如
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.init(); CordovaWebViewClient webViewClient = new CustomWebViewClient(this); webViewClient.setWebView(this.appView); this.appView.setWebViewClient(webViewClient); super.loadUrl("file:///android_asset/www/index.html"); } 请注意,还需要super.init() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |