java - 从android的webview访问JSON响应

标签 java android json webview

在 Android 上,我有一个 webView。我正在加载一个 url。首先,我得到一个 Facebook 的登录页面,在填写登录详细信息后,它会在同一个 webView 上给我一个 JSON Response

我正在使用这段代码加载那个 URL 但现在我不知道如何在 string 中获取那个 JSON Response我完成了那个 url 的内容。

WebViewClient yourWebClient = new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        wb.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
    }
};
wb = (WebView) findViewById(R.id.webview);
wb.getSettings().setJavaScriptEnabled(true);
wb.getSettings().setSupportZoom(true);
wb.getSettings().setBuiltInZoomControls(true);
wb.setWebViewClient(yourWebClient);
wb.loadUrl("http://pqrs.abcde.com/facebook");

JSON Response的格式是:

{"status":"success","msg":"You have successfully logged in."}

最佳答案

构建一个名为 MyJavaScriptInterface 的类。和 WebView 的 MyJavaScriptInterface。

    WebViewClient yourWebClient = new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            wb.loadUrl("javascript:HtmlViewer.showHTML" +
                    "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
        }
    };
    wb = (WebView) findViewById(R.id.webview);
    wb.getSettings().setJavaScriptEnabled(true);
    wb.getSettings().setSupportZoom(true);
    wb.getSettings().setBuiltInZoomControls(true);
    wb.setWebViewClient(yourWebClient);
    wb.loadUrl("http://pqrs.abcde.com/facebook");
    wb.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");

    class MyJavaScriptInterface {

    private Context ctx;
    MyJavaScriptInterface(Context ctx) {
        this.ctx = ctx;      
    }

    @JavascriptInterface
    public void showHTML(String html) {
        System.out.println(html);
    }

}

注意:您需要从 wb.loadUrl("javascript:..."); 中删除窗口。 和“public void showHTML”之前的@JavascriptInterface。

您可以在 html 参数中从 showHtml(..) 获取内容。

关于java - 从android的webview访问JSON响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28847619/

相关文章:

android - 如何在虚拟键盘上的Android模拟器上打开剪贴板?

java - 无法使用 GSON 库反序列化对象数据列表

javascript - 类型错误 : Cannot set property '10' of undefined with angularjs

php - Elasticsearch 部分批量更新

java - Tomcat Alpha SSL 配置

java - 适合任务的设计模式

java - 内存不足错误 : Java heap space while converting some bulk data to toString()

java - 使用JAVA合并多个XML文件的不同节点

android - 如何覆盖 Android 中虚拟键盘的 <ENTER> 键行为

Java - 使用公钥和密码进行身份验证 - j2ssh