找回密码
 加入
搜索
查看: 1576|回复: 3

[网络通信] 如何对获取网页内容超时做一个错误判断[已解决]

[复制链接]
发表于 2018-3-17 20:36:27 | 显示全部楼层 |阅读模式
本帖最后由 heroxianf 于 2018-3-18 02:32 编辑

对一些网站如果加载过长会提示错误,我想做一个错误判断让代码能够处理这个错误,避免退出GUI。


Global $oHttp
Global $Flag = 4

Local $url = 'http://www.google.com/ncr'
Local $Data = _getHtml($url) ;获取网站源码

ConsoleWrite($Data)

Func _getHtml($sUrl)
        $oHttp = ObjCreate("WinHttp.WinHttpRequest.5.1")
        $oHttp.Option(4) = 13056 ;忽略错误标志
;~         $oHttp.Option(6) = True ;是否接收重定向地址信息
;~         $oHttp.SetTimeOuts(1000, 1000, 1000, 5000) ;设置超时时间
        $oHttp.Open('GET', $sUrl, False)
        $oHttp.setRequestHeader("Connection", "keep-alive")
        $oHttp.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36")
        $oHttp.Send()
        $oHttp.getresponseheader('Content-Type')
        $NetData = BinaryToString($oHttp.ResponseBody, $Flag)
        Return $NetData
        $oHttp = 0
EndFunc


错误提示截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2018-3-17 23:10:38 | 显示全部楼层
Global  $__g_oTemplateCOMErrorHandler = 0
Global $Flag = 4

Local $url = 'http://www.google.com/ncr'
Template_COMErrorRegister()
Local $Data = _getHtml($url) ;获取网站源码
If @error Then
        ConsoleWrite('ErrorCode: ' & @error & @CRLF)
        Template_COMErrorUnregister()
Else
        ConsoleWrite($Data)
EndIf


Func _getHtml($sUrl)
        Local $oHttp = ObjCreate("WinHttp.WinHttpRequest.5.1")
        If @error Then Return SetError(1)
        $oHttp.Option(4) = 13056 ;忽略错误标志
;~      $oHttp.Option(6) = True ;是否接收重定向地址信息
        $oHttp.SetTimeOuts(5000, 5000, 5000, 5000) ;设置超时时间
        $oHttp.Open('GET', $sUrl, True)
        $oHttp.setRequestHeader("Connection", "keep-alive")
        $oHttp.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36")
        $oHttp.Send()
        If @error Then Return SetError(2)
        $oHttp.WaitForResponse
        If @error Then Return SetError(3)
        $NetData = BinaryToString($oHttp.ResponseBody, $Flag)
        If @error Then Return SetError(4)
        $oHttp = 0
        Return $NetData
EndFunc   ;==>_getHtml



Func Template_COMErrorRegister()
        $__g_oTemplateCOMErrorHandler = ObjEvent("AutoIt.Error", "Template_COMErrFunc")
EndFunc   ;==>Template_COMErrorRegister

Func Template_COMErrorUnregister()
        $__g_oTemplateCOMErrorHandler = 0
EndFunc   ;==>Template_COMErrorUnregister

Func Template_COMErrFunc()
EndFunc   ;==>Template_COMErrFunc

评分

参与人数 1金钱 +30 收起 理由
heroxianf + 30 非常谢谢~

查看全部评分

发表于 2018-3-22 12:22:50 | 显示全部楼层
好东西,先顶后看
发表于 2019-1-23 14:45:09 | 显示全部楼层
正好遇到这问题,强赞一个!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 21:13 , Processed in 0.180654 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表