Всем доброго времени суток...
Полностью прочитал и переварил описание функции ObjEvent, проникся моделью COM,
но в данном случае развожу руками
Вот скрипт который шлет запрос на сервер... все отлично, замечательно работает (сервак реально поднят, можете проверить)
Шлем сообщение на сервер... сервак должен ответить 'Request is received, but this server could not handle it'
(Запрос получен, но обработать его не удалось) ;D Так и должно быть.
Далее...
Согласно спецификации экземпляр COM-объекта winhttp.winhttprequest.5.1
генерирует события... передавая их в интерфейс 'IWinHttpRequestEvents'
RTFM и собственно вот он обработчик событий в AutoIT:
Но нам интересен первый ; что-же у него там с параметрами... а с параметрами у него вот что:
$ObjectVar - переменная которая хранит хендл экз. COM-объекта который планируем слушать
functionprefix - перефикс к пользоватеьским функциям (типо обработчикам, хотя по сути эмитер получается один, смотрит он в интерфейс, и определяет его состояние)
interface name - говорит сам за себя... это имя интерфейса...
Ну что-ж пробуем:
лично у меня падает все время, причем "стоп машина!" орет система, а интерпритатор покорно складывается показывая
Где я не прав ?
PS: "метод повсеместного втыкания CosoleWrite"... помог определить что ошибка возникает на этапе
когда собственно и происходит первое его событие ; "OnResponseStart" видимо ?
Полностью прочитал и переварил описание функции ObjEvent, проникся моделью COM,
но в данном случае развожу руками
Вот скрипт который шлет запрос на сервер... все отлично, замечательно работает (сервак реально поднят, можете проверить)
Код:
Dim $sServerURL = 'http://94.233.79.242:8000'
Dim $oHTTP = ObjCreate('winhttp.winhttprequest.5.1')
$oHTTP.Open("POST", $sServerURL, True)
$oHTTP.Send('test')
$oHTTP.WaitForResponse()
MsgBox(0, $sServerURL & '--Response', $oHTTP.ResponseText())
Шлем сообщение на сервер... сервак должен ответить 'Request is received, but this server could not handle it'
(Запрос получен, но обработать его не удалось) ;D Так и должно быть.
Далее...
Согласно спецификации экземпляр COM-объекта winhttp.winhttprequest.5.1
генерирует события... передавая их в интерфейс 'IWinHttpRequestEvents'
RTFM и собственно вот он обработчик событий в AutoIT:
Два конструктора у него есть... ; второй для обработки "фэйлов" самого AutoIt (работает, юзаем - всё ОК)ObjEvent ( $ObjectVar, "functionprefix" [, "interface name"] )
ObjEvent ( "AutoIt.Error" [, "function name"] )
Но нам интересен первый ; что-же у него там с параметрами... а с параметрами у него вот что:
$ObjectVar - переменная которая хранит хендл экз. COM-объекта который планируем слушать
functionprefix - перефикс к пользоватеьским функциям (типо обработчикам, хотя по сути эмитер получается один, смотрит он в интерфейс, и определяет его состояние)
interface name - говорит сам за себя... это имя интерфейса...
Ну что-ж пробуем:
Код:
Dim $sServerURL = 'http://94.233.79.242:8000'
Dim $oHTTP = ObjCreate('winhttp.winhttprequest.5.1')
Dim $oEventEmitter = ObjEvent($oHTTP, 'Evt_', 'IWinHttpRequestEvents')
$oHTTP.Open("POST", $sServerURL, True)
$oHTTP.Send('test')
$oHTTP.WaitForResponse()
MsgBox(0, $sServerURL & '--Response', $oHTTP.ResponseText())
Func Evt_OnResponseFinished()
MsgBox(0,'Event Emitter', 'произошло событие OnResponseFinished')
EndFunc
Func Evt_OnError()
MsgBox(0,'Event Emitter', 'произошло событие OnError')
EndFunc
лично у меня падает все время, причем "стоп машина!" орет система, а интерпритатор покорно складывается показывая
... AutoIT3.exe ended.rc:-1073741819
Где я не прав ?
PS: "метод повсеместного втыкания CosoleWrite"... помог определить что ошибка возникает на этапе
Код:
...
$oHTTP.Send('test')
...
когда собственно и происходит первое его событие ; "OnResponseStart" видимо ?