heroxianf 发表于 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


错误提示截图

zghwelcome 发表于 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

fang5072546 发表于 2018-3-22 12:22:50

好东西,先顶后看

joolan 发表于 2019-1-23 14:45:09

正好遇到这问题,强赞一个!
页: [1]
查看完整版本: 如何对获取网页内容超时做一个错误判断[已解决]