Что нового

Как создать запрос HTTP GET с телом?

vovsla

Осваивающий
Сообщения
607
Репутация
36
Есть запрос на PowerShell, который работает
Код:
$local:Body = [ordered] @{"api_key" = $APIKey; "req_time" = $Time; "sign" = $Signature}
$local:Result = Invoke-RestMethod -Method GET -URI $URL -Body $Body


Мне нужно этот запрос написать на автоите.
Запрос создаю так
Код:
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", $URL, False)
$oHTTP.Send($Body)


Тело запроса пробовал создавать в виде строки, как описано здесь по аналогии со строкой
$sPD = 'name=Jacob&bench=150'

И пробовал создавать в виде словаря, как описано здесь
Так появляется ошибка отправки
Код:
$oDictionary = ObjCreate("Scripting.Dictionary")
$oDictionary.Add ("api_key", $APIKey)
$oDictionary.Add ("req_time",$Time)
$oDictionary.Add ("sign", $Signature)

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", $URL, False)
$oHTTP.Send($Body)


На всякий случай пробовал отправить с заголовками
Но так получаю ответ от сервера, что нет параметра api_key
Код:
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", $URL, False)
$oHTTP.SetRequestHeader("api_key", $APIKey)
$oHTTP.SetRequestHeader("req_time", $Time)
$oHTTP.SetRequestHeader("sign", $Signature)
$oHTTP.Send()


В документации к библиотеке WinHttp ничего не нашел про тело запроса
В документации по объекту WinHttpRequest нашел упоминание тела запроса только в параметре Send, но как я уже сказал у меня не получается в нем передать параметры.
Подскажите в чем дело, отправляю не так или не в том формате?
Куда копать дальше?
 

r35p3ct

Продвинутый
Сообщения
228
Репутация
60
Примерно так:
Код:
$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("GET", $link)
$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
$oHTTP.SetRequestHeader("Accept", "image/gif, */*")
$oHTTP.SetRequestHeader("Accept-Language", "ru")
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 OPR/22.0.1471.40 (Edition Next)")
$oHTTP.SetRequestHeader("Host", $host)
$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
If IsDeclared('cookie') And $cookie <> '' Then $oHTTP.SetRequestHeader("Cookie", $cookie)
;~ $oHTTP.SetRequestHeader("Cookie",$cookie)
$oHTTP.Send('')
$oHTTP.WaitForResponse

$headers = $oHTTP.GetAllResponseHeaders()
;~ ConsoleWrite($headers&@LF)
Return $oHTTP.ResponseText
 
Верх