我使用shouldInterceptRequest安卓的WebView shouldInterceptRequest在WebView中不添加RequestProperties
下面是我給我回WebResourceResponse
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private static WebResourceResponse handleRequestViaUrlOnly(WebResourceRequest webResourceRequest){
String url = webResourceRequest.getUrl().toString();
Log.i("intercepting req....!!!", url);
String ext = MimeTypeMap.getFileExtensionFromUrl(url);
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext);
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestProperty("Sample-Header", "hello");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
return new WebResourceResponse(mime, "UTF-8", conn.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
我把這個方法我CustomWebViewClient內部代碼攔截來自網頁流量請求
class CustomWebViewClient extends WebViewClient {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
return handleRequestViaUrlOnly(request);
}
}
但是,當我檢查來自WebView遠程調試器的請求頭在chrome:// inspect /#設備。
我添加的附加RequestProperty不存在。
conn.setRequestProperty("Sample-Header", "hello");
Sample-Header不存在於WebView中的請求標題中。
我錯過了什麼嗎?我會感謝任何幫助。
劑量它會在IO異常塊? –
不會調用這個新的URL(url).openConnection()需要捕獲IOException。 – Aaron
只需發佈調用此方法的完整代碼? –