Что нового

Сеть, интернет WinHttpRequest COM обработка ошибок

idbehold

Новичок
Сообщения
42
Репутация
4
Добрый день. Пытаюсь поправить функцию, которая отправляет GET-запрос на сервер, чтобы скрипт не вываливался с ошибкой.
Так-то функция работает, но если указать несуществующий адрес, то я получаю ошибку:

Ошибка:
"test.au3" (10) : ==> The requested action with this object has failed.:
$g_objectHTTP.Send()
$g_objectHTTP^ ERROR

Мне нужно как-то ее отловить, но я так и не нашел способ как можно получить результат выполнения или ошибки метода $g_objectHTTP.Open чтобы выйти из функции не вызывая $g_objectHTTP.Send

Код функции:
Код:
Global Const $HTTP_STATUS_OK = 200
Global $g_objectHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")

;~ SendRequest('http://www.google.com')
SendRequest('http://nonexistaddress.com')

Func SendRequest($requestUrl)

    $g_objectHTTP.Open("GET", $requestUrl, False)
    $g_objectHTTP.Send()
   
    If ($g_objectHTTP.Status <> $HTTP_STATUS_OK) Then Return MsgBox(0, "",'Неверный ответ от сервера (' &  $g_objectHTTP.Status &  ' status code)')

    return $g_objectHTTP.ResponseText
EndFunc
 
Последнее редактирование модератором:

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$oRequest = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oRequest.Open('GET', 'http://nonexistaddress.com')
$oRequest.Send('')
MsgBox(32, '', $oRequest.responsetext)

$oMyError = 0
Func MyErrFunc()		
EndFunc
 
Автор
idbehold

idbehold

Новичок
Сообщения
42
Репутация
4
Как я понял это стандартная практика при работе с COM? Других способов нет?
Просто сам метод Open судя по доке должен возвращать результат выполнения (S_OK), если соединение было установлено, но не возвращает.
 
Верх