好。标题是自我解释的。我想从任何WebView请求(POST或GET)覆盖每个标头。 Android API提供的方法不会覆盖这些标头。虽然我设置了它们,但默认标题占优势。
例如:
Map<String, String> headers = new HashMap<String, String>();
headers.put("Referer", "www.hello.com");
headers.put("User-Agent", "Any User Agent");
headers.put("Accept-Language", "es");
webView.loadUrl("www.hello.com/world.html", headers);
这不起作用。在模拟器中运行它(好吧,不完全是那个!这是一个例子)并使用Wireshark查看流量后,我可以确认只发送了默认标头。我的自定义标头被丢弃。
当它以这种方式设置时,唯一的自定义标题是User-Agent:
webView.getSettings().setUserAgentString("Any User Agent");
使用loadUrl(url,extraheaders)方法它不起作用。
因此。我正在寻找一种改变我的webview标题的方法。应该是一种方式。根据“internetz”,shouldOverrideUrlLoading和shouldinterceptrequest不会捕获POSTS。我需要抓住POSTS和GET。我想更改来自我的webview的每个请求的标题。应该很简单!但我找不到简单的解决方案。
有什么想法吗?
感谢。
编辑1:
我甚至尝试在我的应用程序中更改语言环境。它有点工作。至少我欺骗了WebView以使用我自己的Accept-Language。但出于某种原因,Android背后的人认为在Accept-Language标题中使用“en-US”是必须的。不管你说什么语言。
我将我的语言环境改为es-AR并且有效。但是WebView也加入了en-US。所以现在我的接受语言是“es-AR,en-US”,这对我来说是不可接受的(请不要问我为什么请。)
这是webview部分的源代码,它获取区域设置并生成accept-langauge标头。请注意部分,如果您的语言环境未设置为US,则强制接受语言为en-US作为“第二语言”。