据我了解,您可以使用 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/