101

Re: AHK: Скачивание через GET/POST-запросы

Я посылаю их чтобы минимизировать вероятность получения ответа из кеша.
Хотя где-то пишут, что WinHttp и так не получает, но официального заявления я не видел.

102

Re: AHK: Скачивание через GET/POST-запросы

Вот тут написано:

A number of WinINet features are not supported in WinHTTP, including URL caching...

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

103

Re: AHK: Скачивание через GET/POST-запросы

Хотя точно неизвестно, не будет ли результат взят из кеша, если он там всё же присутствует, надо протестировать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

104 (изменено: Malcev, 2018-12-26 18:17:52)

Re: AHK: Скачивание через GET/POST-запросы

teadrinker, если используешь прокси, то точно надо использовать.
DD, как вариант вы можете начать использовать MSXML2.ServerXMLHTTP.6.0 объект.
В отличие от XMLHTTP Он происходит из WinHttpRequest, соответственно (все?) методы унаследованы тоже от него + новые возможности.
Сам я его глубоко не копал, поэтому о каких-либо возможных багах не в курсе.
https://support.microsoft.com/en-us/hel … verxmlhttp
https://docs.microsoft.com/en-us/previo … v%3dvs.85)

+ DD

105

Re: AHK: Скачивание через GET/POST-запросы

teadrinker, выше Вы приводили пример отлова ошибки —

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")

HTTP.Open("GET", "https://www.livejournal.com/__rpc_get_thread?journal=v-sidorov&itemid=310165&flat=&skip=&media=&expand_all=1&page=0", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send()
HTTP.WaitForResponse()
status := HTTP.status
if status not in 200,304
{
   MsgBox, Статус: %status%
   Return
}
try ResponseText := HTTP.ResponseText
catch  {
   MsgBox, Error
}

но при тестировании без соединения у меня выводится стандартное окно ошибки. Как сделать, чтобы при ошибке/норме соединения показывался соответствующий MsgBox?

106

Re: AHK: Скачивание через GET/POST-запросы

Обрамляйте try->catch то место, где происходит ошибка.

107

Re: AHK: Скачивание через GET/POST-запросы

Как ни пробую, выводит стандартное окно.

HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")

HTTP.Open("GET", "https://vk.com/foaf.php?id=6", true)
HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
HTTP.Send()
HTTP.WaitForResponse()
status := HTTP.status
if status in 200,304
{
   try {
      ResponseText := HTTP.ResponseText
      MsgBox, %ResponseText%
   }
   catch  {
      MsgBox, Error
   }
}
Else
{
   MsgBox, Error
}

108

Re: AHK: Скачивание через GET/POST-запросы

В окне обычно указана строка, которая вызывает проблему.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

109

Re: AHK: Скачивание через GET/POST-запросы

А разве у вас там ошибка?

110 (изменено: DD, 2019-01-12 17:55:18)

Re: AHK: Скачивание через GET/POST-запросы

teadrinker, вот эта строка выделяется: HTTP.WaitForResponse().
Malcev, когда отключаю соединение, выводится стандартная ошибка, а мне надо, чтобы вместо нее была моя команда.

111

Re: AHK: Скачивание через GET/POST-запросы

Её и обрамляйте в try-catch, а лучше вместе с предыдущей.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg
+ DD

112 (изменено: DD, Сегодня 07:11:58)

Re: AHK: Скачивание через GET/POST-запросы

Можно ли сделать то же самое без использования функций — то есть, вернуться из "catch" к тому, что перед этим скачивалось? На практике, в скрипте с восемью HTTP.WaitForResponse(), этот вариант не работает.


HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")

tt:
loop
{
dwn_fnc_1()
dwn_fnc_1()
{
   Global

   HTTP.Open("GET", "https://vk.com/foaf.php?id=z6", true)
   HTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)")
   HTTP.SetRequestHeader("Pragma", "no-cache")
   HTTP.SetRequestHeader("Cache-Control", "no-cache, no-store")
   HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
   HTTP.Send()
   try {
      HTTP.WaitForResponse()
   }
   catch {
      sleep 1000
      tooltip, - - - 
      dwn_fnc_1()
   }
}
ResponseText := HTTP.ResponseText
tooltip, %ResponseText%
sleep 4000
}
return

113

Re: AHK: Скачивание через GET/POST-запросы

А зачем вам вообще отлавливать ошибки?
Не проще ли их отключить?