gpt4 book ai didi

android - Android webview 中的 setUserAgentString 对 loadURL() 中使用的 HTTP header 没有影响

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:02 25 4
gpt4 key购买 nike

一直在尝试更改 Android 应用的 HTTP 请求中的用户代理字符串。我已经与 wireshark 和模拟器一起对此进行了测试,并且发现虽然我在 webview 中设置了用户代理字符串,但关联的 loadUrl 请求不使用此用户代理字符串。相反,我在 wireshark 捕获中看到了 Dalvik 用户代理字符串。这是代码摘要。有任何想法吗?还是模拟器不支持?

@Override
public void run() {
assert(context != null);

...
...
webView = new WebView(context);
...
String defaultUserAgent = "betaUAteststring";


// Clear per-application caches etc
webView.clearCache(true);
webView.clearHistory();
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setJavaScriptEnabled(true);


webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
....
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
..
}

@Override
public void onLoadResource(WebView view, String url) {
...
}
});


// Start loading


webView.getSettings().setUserAgentString(defaultUserAgent);
String setUA = webView.getSettings().getUserAgentString();
//--> logging here shows the correct user agent, so the webview does accept the value
// However the following statement does not result in an http request with the webviews user agent
webView.loadUrl(url);

//Alternative doesn't help either (and shouldn't according to javadoc)

//Map<String,String> headerMap = new HashMap<String,String>();
//headerMap.put("User-Agent","uaTestInAMap");
//webView.loadUrl(url, headerMap);
}

最佳答案

回答我自己的问题。看来模拟器出于某种原因没有从 web View 中获取用户代理字符串。但是,我还没有找出原因。该代码在真实设备上运行良好。

关于android - Android webview 中的 setUserAgentString 对 loadURL() 中使用的 HTTP header 没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com