【发布时间】:2017-06-11 16:05:39
【问题描述】:
我正在使用 shouldInterceptRequest 拦截来自 webview 的请求
下面是我返回 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);
}
}
但是,当我从 chrome://inspect/#devices 中的 WebView 远程调试器检查请求标头时。
我添加的附加 RequestProperty 不存在。
conn.setRequestProperty("Sample-Header", "hello");
WebView 的请求标头中不存在 Sample-Header。
我错过了什么吗?如有任何帮助,我将不胜感激。
【问题讨论】:
-
是否进入 IO 异常块?
-
不,但调用这个新的 URL(url).openConnection() 需要捕获 IOException。
-
只贴调用这个方法的完整代码?
-
这是我截取url请求的完整代码。
-
handleRequestViaUrlOnly 从该代码的位置调用。
标签: android webview android-webview