【问题标题】:Android WebView Protocol HandlerAndroid WebView 协议处理程序
【发布时间】:2011-11-30 20:23:01
【问题描述】:

我正在尝试使用WebView 开发一个Android 浏览器应用程序,它使用户能够从自定义协议访问内容。自定义协议可以是 foobar://

我想拦截对这个自定义协议的所有请求。这意味着:

  1. GET 请求
  2. POST 请求

并且我需要能够将这些操作的结果交还给 WebView。

可以使用shouldInterceptRequest 处理 GET 请求(从 API 级别 11 可用)。

现在我的问题是:如何拦截和处理 POST 请求

herehere 提出了几乎相同的问题,但是没有找到解决他们问题的方法。

【问题讨论】:

  • 你尝试过覆盖url的负载吗?

标签: android android-webview webviewclient protocol-handler url-interception


【解决方案1】:

您是否尝试过覆盖 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);
        }
    }

这只是一个想法。或许能帮到你。

【讨论】:

  • 这在用户导航到某个 URL 并离开当前页面时很有用。然后我可以使用 WebView.loadUrl(...) 或 .post(...)。但是,如果浏览器只是在执行后台请求(想想 javascript),那么我无法返回它的内容。 shouldInterceptRequest 可以处理 GET 请求并返回内容,但无法拦截 POST 请求并获取 POST 数据。不幸的是,您的方法不能解决问题。谢谢你的尝试!
猜你喜欢
  • 1970-01-01
  • 2016-11-26
  • 2011-01-15
  • 2013-04-28
  • 2011-07-11
  • 2016-10-06
  • 1970-01-01
  • 2011-07-14
  • 2016-09-11
相关资源
最近更新 更多