有没有办法在Android WebView中拦截重定向请求?shouldInterceptRequest(WebView,WebResourceRequest)似乎没有被调用!我想通过以下方式自动捕获所有Web视图请求中的令牌过期:
1.从服务器发出重定向而不是401
2.使用shouldOverrideUrlLoading()调用AppAuth,需要登录
3.在不需要登录的情况下,使用shouldInterceptRequest将其反弹到具有刷新令牌的原始URL
第2项工作正常,但第3项失败得非常惊人,因为shouldInterceptRequest似乎不会针对重定向进行调用,这似乎非常错误--特别是因为这并未记录在文档中,WebResourceRequest API会让人误以为可以检查请求是否为重定向。
我很乐意响应401而不是使用重定向--但我看不到任何一种方法可以在现场使用更新的令牌重试请求,除非请求恰好是顶级页面请求。
我想我可以尝试旧的“页面内”重定向而不是302,看看是否更好,但即使如此,那也是一个hack。
(请注意,这显然是一个不同的问题,而不是Android WebView,在应用程序中如何处理重定向而不是打开浏览器 - 因为我已经有一个Webview,并试图拦截和操作重定向请求。)
第2项工作正常,但第3项失败得非常惊人,因为shouldInterceptRequest似乎不会针对重定向进行调用,这似乎非常错误--特别是因为这并未记录在文档中,WebResourceRequest API会让人误以为可以检查请求是否为重定向。
我很乐意响应401而不是使用重定向--但我看不到任何一种方法可以在现场使用更新的令牌重试请求,除非请求恰好是顶级页面请求。
我想我可以尝试旧的“页面内”重定向而不是302,看看是否更好,但即使如此,那也是一个hack。
(请注意,这显然是一个不同的问题,而不是Android WebView,在应用程序中如何处理重定向而不是打开浏览器 - 因为我已经有一个Webview,并试图拦截和操作重定向请求。)