1

Тема: AHK: httpQuery или какой то аналог

Подскажите плиз как реализовать лучше следущее.
Скрипт должен делать GET запрос на перловый скрипт, в котором будет передавать некоторые параметры.
и получать ответ.

Через httpQuery не получается почему то.


#include httpQuery.ahk
length := httpQuery( data:="", "http://www.autohotkey.com/download/index.htm" )
VarSetCapacity( data, -1 )
MsgBox,0, Length: %length%, % data

Почему то присылает -1.
Есть небольшое подозрение что это битый сам httpQuery.ahk
Может кто подсказать как это можно реализовать ? или хотя бы где сказать правильный httpQuery.ahk

2

Re: AHK: httpQuery или какой то аналог

Я посылаю get запросы без всяких инклудов. В самой виндовс встроен способ отправки запросов.


url := "ссылка"
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", url, true)
whr.Send()
whr.WaitForResponse(10)
msgbox, % whr.ResponseText
Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

3

Re: AHK: httpQuery или какой то аналог

belyankin12 пишет:

Я посылаю get запросы без всяких инклудов. В самой виндовс встроен способ отправки запросов.

ой красота. премного благодарен.
А что почитать на эту тему что бы например отправить или получить какой то файл ?

и еще очень важный момент. Если вдруг сервер недоступен или это занимает какое то время - скрипт будет ожидать завершение передачи ?
нужно что бы это все занимало как можно меньше времени. Даже пусть передача неудачна- но скрипт должен продолжать свою работу

4

Re: AHK: httpQuery или какой то аналог

whr.WaitForResponse(10)


Это значит что скрипт будет ждать ответа от сервера ровно 10 секунд (меньше 10 и больше 30 смысла ставить нет), если ответа не будет, переменная, обозначающая текст ответа от сервера будет пустой. Все остальные сообщения уже отправляет вам сервер. Насчёт обмена файлами ничего сказать не смогу,

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

5

Re: AHK: httpQuery или какой то аналог

lngvar, у tmplinshi много всяких раработок на эту тему.
https://gist.github.com/tmplinshi/9948634
https://gist.github.com/tmplinshi/8428a280bba58d25ef0b
https://gist.github.com/tmplinshi/a97d9a99b9aa5a65fd20

6 (изменено: Artur_iOS, 2017-10-16 00:46:19)

Re: AHK: httpQuery или какой то аналог

Проффесиональная функция для работы с GET/POST запросами
https://dumpz.org/2701857/

7

Re: AHK: httpQuery или какой то аналог

А в чем ее профессиональность?
В ошибках?
И почему код вы не постите здесь, а на внешнем ресурсе?

8

Re: AHK: httpQuery или какой то аналог

WinHttp.WinHttpRequest меня вполне устроил...
но возникла следущая проблема :
изредка, когда ответ не успевает прийти, выскакивает окно, которое говорит что не получен ответ и спрашивает продолжить скрипт или нет .
Просто издевательство.
Как можно избавиться от этого ? меня вполне устроит то, что будет игнорироваться факт не получения ответа от сервера.

И еще может подскажете.... хочу вставить этот запрос в таймер . И что бы в момент WaitForResponse(10) он как бы отдавал управление главному треду, который имеет меньший приоритет.

9

Re: AHK: httpQuery или какой то аналог

lngvar пишет:

Как можно избавиться от этого ?

ComObjError(false)

Асинхронные вызовы проще посылать с Msxml2.XMLHTTP.
В справке по команде urldownloadtofile есть пример.