Что нового

Обработка ошибок при получении html - кода.

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Всем добрый день.
Скачиваю страничку следующим образом:
Код:
$sURL = "http://www.admuncher.com/"
$sPath = @ScriptDir & "\HTML.html"
FileWrite($sPath, _GetHTML($sURL))


Func _GetHTML($sURL, $sSendParam = "")
	Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
	$oHTTP.Open("GET", $sURL, False)
	$oHTTP.SetRequestHeader("Content-Type", "text/html")
	$oHTTP.SetRequestHeader("Accept", "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/msword, */*")
	$oHTTP.SetRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)")
	$oHTTP.SetRequestHeader("Host", "www.admuncher.com")
	$oHTTP.SetRequestHeader("Accept-Language", "ru")
	$oHTTP.Send($sSendParam)
	Return $oHTTP.ResponseText
EndFunc   ;==>_GetHTML


В 99% все прекрасно скачивается. Но если сайт недоступен, то вылазит ошибка, скрипт вылетает и SciTE пишет следующее:
Код:
: ==> The requested action with this object has failed.:
$oHTTP.Send($sSendParam)
$oHTTP.Send($sSendParam)^ ERROR
->10:30:43 AutoIT3.exe ended.rc:1
+>10:30:45 AutoIt3Wrapper Finished
>Exit code: 1    Time: 2.386


Помогите, пожалуйста, получить эту ошибку для обработки, у меня никак не получается.
Спасибо.

PS
Результат с ошибкой можно получить запустив скрипт при отключенном интернете.
 
Автор
madmasles

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
snoitaleR,
Большое спасибо. Ваш код отлично работает и дает возможность обработать ошибку.

Тем не менее, вопрос остается. Как получить ошибку именно из моего кода?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
"Дубовый" способ, но работает.

Код:
;$sURL = "http://www.admuncher.com/"
$sURL = "http://www.?????????.com/"
$sPath = @ScriptDir & "\HTML.html"
FileWrite($sPath, _GetHTML($sURL))

Func _GetHTML($sURL, $sSendParam = "")
	Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
	$oHTTP.Open("GET", $sURL, 0)
	$oHTTP.SetRequestHeader("Content-Type", "text/html")
	$oHTTP.SetRequestHeader("Accept", "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/msword, */*")
	$oHTTP.SetRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)")
	$oHTTP.SetRequestHeader("Host", "www.admuncher.com")
	$oHTTP.SetRequestHeader("Accept-Language", "ru")
	Execute('$oHTTP.Send($sSendParam)')
	If (@error) Or ($oHTTP.Status <> 200) Then
		MsgBox(0, '', 'Error!')
		Return SetError(1, 0, '')
	Else
		Return $oHTTP.ResponseText
	EndIf
EndFunc   ;==>_GetHTML
 
Автор
madmasles

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
snoitaleR,
Спасибо, но...
Увы, пример с оф. сайта не работает у меня. Я примерно так и пробовал, прежде чем задать вопрос на форуме.

Yashied,
Большое спасибо, Ваш код прекрасно отрабатывает.
Только почему он
"Дубовый" способ...
, если он отрабатывает и, что для меня важно, возвращает ошибку?
 

dimontag

Новичок
Сообщения
22
Репутация
0
Меня тоже мучил одно время этот вопрос, никак не получалось обработать эту ошибку. Этот способ еще не пробовал, но верю что поможет.
К автору вопрос.
Какое назначение и 3 параметра в функции
Код:
$oHTTP.Open("GET", $sURL, False)

Я его не указываю... но хотелось бы знать на что он влияет
 
Верх