我也有一些問題,攔截請求頭在WebView myWebView
。
首先,我嘗試通過爲myWebView
設置自定義WebViewClient
來做到這一點。
myWebView.setWebViewClient(new WebViewClient() {
@Override
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
Log.v("USERAGENTBROWSE", "shouldOverrideUrlLoading api >= 21 called");
//some code
return true;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.v("USERAGENTBROWSE", "shouldOverrideUrlLoading api < 21 called");
//some code
return true;
}
});
但方法shouldOverrideUrlLoading(...)
從未被調用過。我真的不知道爲什麼。
後來我發現,有攔截一些常見的頭象"User-Agent"
,"Cache-Control"
方式等:
myWebView.getSettings().setUserAgentString("your_custom_user_agent_header");
myWebView.getSettings().setCacheMode(int mode);
...
希望它可以幫助別人。
使用Android的「WebView」或「WebViewClient」afaik讀取請求標頭是不可能的。我使用輕量級代理解決了這個問題。 – acj
@acj - 你是否在'WebView'或外部(路由器/網絡級別)上以編程方式執行代理? –
我在設備設置中的移動網絡中進行配置。另一種選擇:如果我只需要一個快速而又髒的方法來檢查標題,我將在筆記本電腦上啓動一個netcat('nc')實例,並將'WebView'連接到netcat實例。 – acj