Android WebView 为每个响应添加自定义 HTTP header

标签 android webview http-headers addition

据我了解,您可以使用 WebViewClient 覆盖 Android WebView 功能,并且已在许多领域成功实现。覆盖不会授予对请求对象的访问权限。

iPhone UIWebView 有一种非常强大的方法来控制每个请求对象。在 Android WebView 中还有另一种方法可以做到这一点吗?

即使您使用 loadUrl 函数添加自定义 header ,它也不会添加到后续请求中。我在其他问题上看到了很多回复,但都不太令人满意。

任何人都可以提供有关如何实现此功能的一些见解吗?

谢谢。

最佳答案

这就是您可能已经知道的内容。 Android 18 之后,您可以“添加” header 。否则,您可以更改用户代理。我查看了WebView源代码。代码深处的四个对象是一个 WebViewFrame 对象,调用如下:

private native void nativeLoadUrl(String url, Map<String, String> headers);

C 代码的更深处是 Google 想要强行塞给我们的 header 的加载。我们现在可以添加新的,但否则就会坚持他们的选择。 “开源”显然意味着“将你的工作捐赠给公司利润”。他们选择 Apache 许可证而不是 GNU GPL 是有原因的。但我离题了。

正如我们在陆军中所说,底线是我们在 Android 方面是 SOL。所以这是一个想法:

不要使用loadUrl。也许您可以编写自己的 loadPage 并仅使用 Java 进行调用,然后使用 webview 将响应加载为数据。对于 Android 试图从 Java 中删除的任何内容,可能都需要向应用程序添加一个 jar 文件。我要试试这个。

关于Android WebView 为每个响应添加自定义 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20699127/

相关文章:

android - Nougat (25.0.0)编译警告

android - WorkManager 的 OneTimeWorkRequest 的重试策略/机制是什么

ios - Alamofire 的证书、表单数据和 HTTP header 数据无效

http - 为什么浏览器会向页面 URL 发出多次请求?

html - 如何识别国家并相应地更改 URL

Android - 如何从 kotlin 流中读取值?

java - Android Canvas onDraw onResume时出现问题

Android WebView 不加载本地 css 文件

android - WebView 应用程序 : How to download a file inside webview app & external link should open outside the app

html - 如何修复 webview 中调整视频 HTML 的大小?