3

我已经看到了检测 URL 何时完成加载的答案,我需要知道这一点。我还需要知道加载是否成功。

我需要知道这一点,因为我正在加载一个 HTML 插页式广告,如果它没有加载,那么我不想显示它。我可以自己制作WebClient并检测onPageFinished,但我注意到如果我关闭互联网,我仍然会看到onPageFinished被调用。那么,如果两者都完成并成功,我如何检测该 URL?

编辑:查看 ObAt 的建议,并将其与这个 SO question的最流行答案结合起来,我仍然有点卡住。似乎当我关闭互联网后,WebView 的内容onPageFinished似乎是(我的 section_id 编号更改为 9999):

<head><head><script type="text/javascript" src="http://ad.leadboltads.net/show_app_ad.js?section_id=9999"></script></head><body></body></head>

这没有显示任何明显的错误。

编辑:刚刚注意到我在做 aLoadData而不是 a LoadUrl,我不知道这是否有什么不同。

编辑:如果我的互联网已打开并且广告加载成功,那么 webview 的示例内容是这样的:

<iframe name="ap_iframe" width="300" height="250" frameborder="0" src="http://ad.leadboltads.net/show_app_ad?section_id=9999&amp;lang=en-GB&amp;scr_w=480&amp;scr_h=800&amp;
url=data%3Atext%2Fhtml%2C%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22http%3A%2F%2Fad.leadboltads.net%2Fshow_app_ad.js%3Fsection_id%__HIDDEN__script%253E&amp;
referer=" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no"></iframe></body></head>

所以,我现在可以看到这两种状态之间的差异......也许我可以在成功加载的页面中搜索“iframe”或“width”或任何我可能期望但不在失败页面中的东西...... .但感觉是一个非常不一般且不能令人满意的答案。

4

2 回答 2

2

您可以检查您下载的数据是否不包含任何错误的HTTP 状态错误(HTTP 200 错误表示一切正常)。您还可以检查下载的数据是否不为null

编辑: 成功的响应比不成功的请求长得多,因此您可以检查响应的长度。

if(serverRespons.length > 50){
  // do something
}

或者您可以搜索您的回复,如果它包含仅在您的请求成功时获得的属性

String myCheck = "width="
if(serverRespons.toLowerCase().contains(myCheck.toLowerCase()){
  //do something
}

我自己没有测试代码,但希望它对你有用!

注意:我更喜欢第二种方式,或者组合:)

于 2012-12-12T17:27:35.340 回答
-3

也许通过设置 webchromeclient 并覆盖 onprogresschanged 方法。

在那里您可以检查进度何时为 100 以检查它是否已完成加载。

于 2012-12-12T16:55:20.513 回答