gpt4 book ai didi

android - AJAX 请求 Cordova/PhoneGap 2.1.0 Android 应用程序中的自签名 HTTPS 资源

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:39 25 4
gpt4 key购买 nike

我正在尝试实现 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));

...对于 MainActivity 类的重写 init() 方法,我收到此错误:

The method setWebViewClient(CordovaWebView, MyWebViewClient) is undefined for the type MainActivity

这是我的 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");
}
}

我没有足够的声誉,否则我只会评论克里斯的回答。另外,我不是在寻找 jQuery 解决方案(我已经知道我可以调用 $.ajax() 来避免这个问题,但我试图让 jQuery 远离我的应用程序)。

有什么想法吗?非常感谢您的帮助!

编辑:请在回复之前查看我的评论。

最佳答案

这可以在以后的 Cordova 版本(我使用的是 2.2)上按如下方式修复。如前所述,它在 onPageStarted() 处失败 - 这是因为它需要一个 appView,该 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() 也是需要的

关于android - AJAX 请求 Cordova/PhoneGap 2.1.0 Android 应用程序中的自签名 HTTPS 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13072717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com