首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓WebView:拦截重定向请求?

问安卓WebView:拦截重定向请求?
EN

Stack Overflow用户
提问于 2017-08-25 14:15:43
回答 1查看 3.9K关注 0票数 6

有没有办法拦截安卓WebView中的重定向请求?shouldInterceptRequest(WebView,WebResourceRequest)似乎没有被调用!

我希望通过以下方式自动捕获所有web视图请求中的令牌过期:

  1. 从服务器发出重定向而不是401
  2. 在需要登录的地方使用shouldOverrideUrlLoading()调用AppAuth
  3. 使用shouldInterceptRequest返回到原始URL,并在不需要登录的情况下刷新令牌

第2项工作正常,但是第3项失败得很厉害,因为shouldInterceptRequest似乎没有被调用重定向,这似乎真的是错误的--特别是因为这还没有文档化,而且WebResourceRequest API会让人相信,甚至可以检查请求是否是重定向。

我很乐意回复401,而不是使用重定向--但我看不出用更新的令牌“原地”重试请求的方法,除非请求恰好是顶级页面请求。

我想我可以尝试旧的“页面中”重定向,而不是302,看看它是否更好,但即使这样做了,这是一个真正的黑客。

(请注意,这显然是一个与Android WebView, how to handle redirects in app instead of opening a browser不同的问题-因为我已经有了一个and视图,并且正在尝试拦截和操作重定向请求。)

EN

回答 1

Stack Overflow用户

发布于 2019-12-09 10:49:05

截取Kotlin的例子:

代码语言:javascript
复制
webView.webViewClient = object: WebViewClient() {
    override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
        if (url.startsWith("https://example.com")) {
            // ...
            return false
        }
        return super.shouldOverrideUrlLoading(view, url)
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45883426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档