如何对获取网页内容超时做一个错误判断[已解决]
本帖最后由 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
错误提示截图
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]