【问题标题】:How to load URL with headers in WebView?如何在 WebView 中加载带有标题的 URL?
【发布时间】:2018-06-15 15:24:31
【问题描述】:

我想在 WebView 中加载 URL 并添加标题 User-AgentautoToken。 我试图只拥有val map = HashMap<String, String>() 并将其添加为webview.loadUrl(url, map)

第二次尝试只是覆盖shouldInterceptRequest()

override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest): WebResourceResponse? {
    request.requestHeaders?.put(LegacyAuthInterceptor.HEADER_AUTH_TICKET, autoToken)
   request.requestHeaders?.put("User-Agent", userAgent)
    return super.shouldInterceptRequest(view, request)
  }

这些解决方案都不起作用。

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    使用以下更改User-Agent

    webview.getSettings().setUserAgentString("userAgent");

    理想情况下,webview.loadUrl(url, map) 应该足以添加标题。通过覆盖WebViewClient 中的方法来实现另一种选择:

    @Override
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request){
        view.loadUrl(request.getUrl().toString(),headerMap);
        return true;
    }
    
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
        view.loadUrl(url,headerMap);
        return true;
    }
    

    【讨论】:

    • 这个解决方案对我有用。在我的情况下,该页面需要访问令牌,我需要在来自 Android 的 WebView 的 loadUrl(String, Map) 和 HTML 中的表单的 submit 的每个请求上放置授权令牌。
    【解决方案2】:
    val map = HashMap<String, String>()
    map[AUTO_TOKEN] = autoToken
    webClientBinding.webView.settings.userAgentString = userAgent
    WebView.setWebContentsDebuggingEnabled(true)
    webClientBinding.webView.webViewClient = object : WebViewClient() {
      override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest): WebResourceResponse? {
        CookieManager.getInstance().removeAllCookies(null)
        return super.shouldInterceptRequest(view, request)
      }
    }
    webClientBinding.webView.loadUrl(url, map)
    

    应该可以了!

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多