如何从Android中的webview获取/获取发布数据

时间:2015-10-29 10:23:17

标签: java android android-webview

我没有将我的网站作为Android应用程序实现,而是使用我的网站通过webview在应用程序中显示它。我有搜索和搜索,发现类似的问题,但没有给我一个有效的解决方案...我想在使用用户按提交的网页时从webview获取发布数据。我使用swift在iOS中使用此解决方案:Grabbing POST data from UIWebView

到目前为止我尝试了什么:但是这会返回原始html。

    wv.setWebViewClient(new WebViewClient(){

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {

            Log.d(LOGTAG, url);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if(flag)
            {
                try {
                    URL aURL = new URL(url);
                    HttpURLConnection conn = (HttpURLConnection) aURL.openConnection();
                    conn.connect();
                    InputStream is = conn.getInputStream();

                    BufferedReader streamReader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                    StringBuilder response = new StringBuilder();
                    String inputLine;
                    while ((inputLine = streamReader.readLine()) != null) {
                        response.append(inputLine);
                    }
                    is.close();

                    String s = response.toString();

                    Log.d(LOGTAG, "response" + s);

                    view.loadUrl(url);

                    return true;

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                    return false;
                } catch (IOException e) {
                    e.printStackTrace();
                    return false;
                } 
            }

            return false;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            if(url.contains("form.html"))
            {
                flag = true;
            }


        }
    });

    wv.loadUrl(mainUrl);

1 个答案:

答案 0 :(得分:0)

你的反应是正确的。下面的代码将点击网址,并且与加载网页一样好。所以你输入流中的html数据。

         HttpURLConnection conn = (HttpURLConnection) aURL.openConnection();
                conn.connect();
                InputStream is = conn.getInputStream();

解决您的问题(Javascript桥)。 Android支持Javascript Bridge,您可以编写可以捕获数据的javascripts。

<强> UPADTE

目前基于您的问题2解决方案可以建议我知道。

  1. 在网站(html页面,网络环境)上进行更改,例如写一个     单击处理程序上的javascript(您需要触发捕获的位置)     发布数据)捕获所需的数据,然后将其传递给android     javascript bridge(android java code,android java     环境)绑定到加载html页面的webview。同     这种方法的变化必须在地方和html页面上进行     更改需要与javacode更改(javascript桥接)保持一致     名称)
  2. Javascript注入 - 理解html页面并执行javascript注入..看看这个ans