我正在寻找一种方法来记录嵌入式webview所做的请求和开始/结束时间。到目前为止,除了生根电话和运行tcpdump之外,我无法找到办法。这对我有用,但我需要在现场运行,所以这不是真的可行。有很多方法可以记录URL和开始时间,但我看不到结束(或奖励,完整的响应元数据)。
如果我可以包装当前请求,那么shouldLoadResource可以工作,但是我必须自己使用HTTP支持来获取它以便整体返回它,因为没有足够的API暴露给完全转发到内部请求。 (我不想出于多种原因这样做,包括设备上的webview不使用与HTTP类相同的网络堆栈,因为它会改变子资源的时间。)
我一直在设法打开chrome_net调试标志来实现这一点,但我无法弄清楚如何在WebView或系统属性的上下文中这样做。
我真的不想发送我自己的webcore来做这件事,但如果需要必须......
答案 0 :(得分:2)
覆盖方法shouldInterceptRequest()
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
Log.d(LOG_TAG, "shouldInterceptRequest: " + url);
return super.shouldInterceptRequest(view, url);
}
答案 1 :(得分:0)
在这种情况下,您还可以添加WebViewClient(请参阅http://developer.android.com/reference/android/webkit/WebViewClient.html)。这看起来像
WebView webView.setWebViewClient(new MyWebViewClient());
.
.
.
public class MyWebViewClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// Note time
// Return false to say we want the WebView to handle the url.
return false;
}
@Override
public void onPageFinished (WebView view, String url)
{
super.onPageFinished(view, url);
// Note time
}
}
请注意,shouldOverrideUrlLoading和onPageFinished仅针对主框架调用 - 不会为iframe或框架集调用它们。但这应该可以满足您的需求。