添加来自android webview的自定义标头

时间:2013-08-23 10:54:17

标签: android webview

我需要为来自WebView的每个请求添加自定义标头。我知道loadURL具有添加额外标题的参数,但这些参数仅适用于部分请求。 所有(资源相关的)请求都不包含标头。 我查看了WebViewClient中的所有覆盖,但没有任何内容允许向资源请求添加标头 - onLoadResource(WebView view, String url)shouldInterceptRequest(Webview,url)。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:8)

shouldInterceptRequest(Webview,url)可以帮助您拦截网站的每个请求,例如JavaScript,CSS,Image。然后在shouldInterceptRequest(Webview,url)内,您可以使用参数url使用HttpClientHttpPOST初始化新的http请求,以下是示例代码:

DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(<"your url for each request">);
httpPost.setHeader("<header-name>", "<header-value>");
HttpReponse httpResponse = client.execute(httpPost);

//here omit getting content-type and encoding

InputStream reponseInputStream = httpReponse.getEntity().getContent();

然后,您可以将responseInputStream添加到return WebResourceResponse(<content-type>, <encoding>, reponseInputStream)

中的shouldInterceptRequest(Webview,url)

如果您有任何不需要添加更多标题的请求,只需对其进行过滤,return nullshouldInterceptRequest(Webview,url)将完成剩下的工作。

希望这可以提供帮助。