Android 虽然webview url的Inputstream为空,但webview在其视图上显示了一些内容

Android 虽然webview url的Inputstream为空,但webview在其视图上显示了一些内容,android,android-webview,Android,Android Webview,我需要阅读html内容,而不是在webview上显示它,同时使用webview进行一系列交易,如使用webview进行在线支付。一旦到达最后一页,我将检查onPageFinished回调中的URL,并建立URLConnection以读取inputstream。但是这总是空的内容,最终的webview在屏幕上有一些内容 public class mWebClient extends WebViewClient { @Override public void onLoadResour

我需要阅读html内容,而不是在webview上显示它,同时使用webview进行一系列交易,如使用webview进行在线支付。一旦到达最后一页,我将检查onPageFinished回调中的URL,并建立URLConnection以读取inputstream。但是这总是空的内容,最终的webview在屏幕上有一些内容

public class mWebClient extends WebViewClient {
    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);

        // Utils.displayLogs("<<<<<< mydebug >>>>>>>", "onLoadResource : "
        // + url);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub

        super.onPageStarted(view, url, favicon);
        Utils.displayLogs("<<<<<< mydebug >>>>>>>", "Url : " + url);
        if (mProgressDialog != null && !mProgressDialog.isShowing())
            mProgressDialog.show();
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub

        // Utils.displayLogs("<<<<<< mydebug >>>>>>>", "Url : " + url);
        if (url.endsWith("finalSuccessPage.aspx")
                || url.endsWith("finalErrorPage.aspx")) {
            try {
                List<String> vals = checkSuccessContent(url);
                if (vals != null && vals.size() > 0) {                      
                    Log.d("<<<<<<mydebug >>>>>>", "vals[0] : "
                            + vals.get(0));
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        super.onPageFinished(view, url);
        if (mProgressDialog != null && mProgressDialog.isShowing())
            mProgressDialog.dismiss();
    }

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

    private List<String> checkSuccessContent(String url) throws IOException {
        List<String> vals = new ArrayList<String>();
        if (url.endsWith("finalSuccessPage.aspx")
                || url.endsWith("finalErrorPage.aspx")) {


            URL tUrl = new URL(url);
            URLConnection con = tUrl.openConnection();

            Reader r = new InputStreamReader(con.getInputStream());
            StringBuilder buf = new StringBuilder();
            while (true) {
                int ch = r.read();
                if (ch < 0)
                    break;
                buf.append((char) ch);
            }
            String str = buf.toString();
            if (str.contains(Constants.STR_SUCCESS)) {
                String[] lVals = str.split("~");
                if (lVals != null) {
                    for (int i = 0; i < lVals.length; i++) {
                        vals.add(lVals[i]);
                    }
                }
            }
        }

        return vals;
    }
}
提前感谢,,
JRH

不要从shouldOverrideUrlLoading调用loadUrl。对于具有非https方案的子帧调用shouldOverrideUrlLoading。如果您转到一个类似于您的代码的页面,则会调用view.loadUrl'tel:1234',并且您会显示一个错误页面,因为webview不知道如何加载tel:URL。服务器是否希望一些cookie就位?看见