gpt4 book ai didi

Android WebView : Intercept redirect requests?

转载 作者:行者123 更新时间:2023-12-04 16:05:23 34 4
gpt4 key购买 nike

有什么方法可以拦截 Android WebView 中的重定向请求? shouldInterceptRequest(WebView,WebResourceRequest) 似乎没有被调用!

我想通过以下方式自动捕获所有 Web View 请求中的 token 过期:

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

  • 第 2 项工作正常,但第 3 项失败得惊人,因为 shouldInterceptRequest 似乎没有被调用来进行重定向,这似乎真的是错误的——特别是因为这没有记录在案并且 WebResourceRequest API 会让人相信甚至可以检查是否请求是重定向。

    我很乐意响应 401 而不是使用重定向——但我认为没有办法使用更新的 token “就地”重试请求,除非请求恰好是顶级页面请求。

    我想我可以尝试旧的“页面内”重定向而不是 302,看看它是否效果更好,但即使它确实是一个 hack。

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

    最佳答案

    Kotlin 上的拦截示例:

    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)
    }
    }

    关于Android WebView : Intercept redirect requests?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883426/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com