我在活动的 onCreate() 方法中使用 loadUrl() 方法将内容从外部 Web 服务器加载到 Web 视图中(我正在构建一个 Android 应用程序)。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("http://server-name/path/to/my/server/app/");
}
在服务器上,我检查 ACCEPT HTTP 标头以决定将哪种数据格式传递给客户端。
现在的问题是:loadUrl() 方法似乎总是发送 ACCEPT 标头值“application/xml,...”,这将导致我的服务器传递的数据不是布局良好的 html(这就是我想要的 webview ),而是作为纯 xml(这对于某些 Web 服务客户端来说是很好的)。
所以我想做的是将 ACCEPT HTTP 标头设置为“text/html”,但 loadUrl() 方法不允许我这样做。
我查看了 cordova/android 的源代码,发现 loadUrl() 方法(在 CordovaWebView.java 中)最终调用了(android sdk)WebView 的 loadUrl() 方法,该方法被重载以获取一些额外的 http 标头。但是我无法通过正常的科尔多瓦使用访问该 loadUrl 方法。
所以我编辑了 CordovaWebView 的 loadUrlNow() 方法,该方法调用了 WebView 的 loadUrl() 方法并硬编码了一个额外的标头:
void loadUrlNow(String url) {
...
Map<String, String> extraHeaders = new HashMap<String, String>();
extraHeaders.put("ACCEPT", "text/html");
super.loadUrl(url, extraHeaders);
}
然后编译它,用我自己的替换原来的 cordova.jar 并重建我的 android 应用程序。但是,如果我现在启动应用程序并检查服务器端的 ACCEPT HTTP 标头,则 ACCEPT 标头没有改变。它的值与硬编码额外标头之前的值相同;看来我无法更改该标题。
那么,在调用 loadUrl() 方法时,有什么方法可以设置 ACCEPT http 标头吗?