安卓WebView协议处理程序

7
我正在尝试使用 WebView开发一款Android浏览器应用程序,使用户可以通过自定义协议访问内容。该自定义协议可以是 foobar://
我想要拦截所有对该自定义协议的请求。这意味着:
  1. GET请求
  2. POST请求
并且我需要能够将这些操作的结果交给WebView。
GET请求可以使用 shouldInterceptRequest(从API级别11可用)进行处理。
现在我的问题是:如何拦截和处理POST请求?

类似的问题已经在这里这里提出,然而他们的问题都没有找到解决方案。


你尝试过重写URL的加载吗? - Raykud
1个回答

0

你尝试过覆盖post方法做类似这样的事情吗:

private class ViewerWebViewClient extends WebViewClient {

        @Override
        public void onPageFinished( WebView view, String url ) {

        }

        @Override
        public boolean shouldOverrideUrlLoading( WebView view, final String url ) {
            if(!url.contains(MYKEYWORD))
                {
                Toast.makeText(getActivity(),POSTING, Toast.LENGTH_LONG).show();
                return true;
                }
            return super.shouldOverrideUrlLoading(view, url);
        }
    }

这只是一个想法。也许可以帮助你。


2
如果用户正在导航到某个URL并离开当前页面,则此功能非常有用。然后我可以使用WebView.loadUrl(...)或.post(...)。但是,如果浏览器只是进行后台请求(考虑JavaScript),则无法返回其内容。shouldInterceptRequest可以处理GET请求并返回内容,但无法拦截POST请求并获取POST数据。不幸的是,您的方法无法解决此问题。感谢您的尝试! - foens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接