如何在 WebView 中加载 URL 和 headers?
How to load URL with headers in WebView?
我想在 WebView 中加载一个 URL 并添加 headers User-Agent
和 autoToken
。
我尝试只使用 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)
}
None 这些解决方案有效。
使用以下内容更改User-Agent
webview.getSettings().setUserAgentString("userAgent");
理想情况下 webview.loadUrl(url, map)
应该足以添加 headers。通过覆盖 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;
}
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)
应该可以!
我想在 WebView 中加载一个 URL 并添加 headers User-Agent
和 autoToken
。
我尝试只使用 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)
}
None 这些解决方案有效。
使用以下内容更改User-Agent
webview.getSettings().setUserAgentString("userAgent");
理想情况下 webview.loadUrl(url, map)
应该足以添加 headers。通过覆盖 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;
}
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)
应该可以!