我已经看到了检测URL何时完成加载的答案,我需要知道.. 但是我还需要知道加载是否成功。
我需要知道这一点,因为我正在加载HTML插页式广告,如果没有加载,那么我不想显示它。我可以创建自己的WebClient
并检测onPageFinished
,但我注意到如果我关闭互联网,我仍会看到onPageFinished
被调用。那么,如果完成并成功,我如何检测到URL?
编辑:看看ObAt的建议,并将其与this SO question最受欢迎的答案相结合,我仍然有点陷入困境。似乎当我关闭互联网时,onPageFinished
之后的WebView内容似乎是(我的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>
这并没有显示任何明显的错误。
编辑:刚刚注意到我正在做LoadData
而不是LoadUrl
,我不知道这是否有任何区别。
编辑:如果我的互联网已启用并且广告加载成功,那么webview的示例内容就是:
<iframe name="ap_iframe" width="300" height="250" frameborder="0" src="http://ad.leadboltads.net/show_app_ad?section_id=9999&lang=en-GB&scr_w=480&scr_h=800&
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&
referer=" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no"></iframe></body></head>
所以,我现在可以看到这两种状态之间的差异......也许我可以只搜索“iframe”或“width”或者在成功加载的页面中我可能期望的任何不在失败状态的页面页面......但这感觉就像是一个非常普遍且不尽如人意的答案。
答案 0 :(得分:2)
您可以检查下载的数据是否包含任何错误HTTP Status Error(HTTP 200错误意味着一切正常)。您还可以检查下载的数据是否不是 null 。
修改强> 成功的响应比不成功的请求长得多,因此您可以检查响应的长度。
if(serverRespons.length > 50){
// do something
}
或者您可以搜索您的回复,如果它包含您的请求成功后才能获得的属性
String myCheck = "width="
if(serverRespons.toLowerCase().contains(myCheck.toLowerCase()){
//do something
}
我自己没有测试代码,但希望它适合你!
注意:我更喜欢第二种方式或组合:)
答案 1 :(得分:-3)
可能通过设置webchromeclient并覆盖onprogresschanged方法。
在那里你可以检查进度是否为100以检查它是否已完成加载。