[Помощь] Отправка POST через http с использованием json
|
|
laduhaaa |
Дата: Воскресенье, 17.12.2017, 12:22 | Сообщение # 1
|
Новичок
Сообщений: 2
Статус: Offline
|
Делаю скрипт для МО, уже сделал сервер который на POST запрос добавляет данные в базу данных. Но я не умею посылать запросы через AHK. + Мне надо что бы тело запроса состояло из json и выглядело приблизительно вот так:
Код { "name": "Vasya_Petrov", "rang": 9 }
|
|
|
|
Demy |
Дата: Воскресенье, 17.12.2017, 14:05 | Сообщение # 2
|
Бывалый
Сообщений: 422
Статус: Offline
|
Ну, бд юзать прямо через скрипт - грех. Ибо можно открыть код и узнать данные приватные. Как вариант, можно передавать данные скрипту, а вот уже он отправляет их бдшке. Но если нужно прямо так, то гугли про JSON.ahk . А это вот ссылка на функцию для отправки POST даты ( хотя, помню, что был метод проще, но это первое, что нагуглил )
Добавлено (17.12.2017, 14:05) --------------------------------------------- Вспомнил. WinHttp. ссылка
AutoReporter / http://cheat-master.ru/forum/150-486717-1 Finder / http://cheat-master.ru/forum/160-497245-1 DLQ Binder / http://cheat-master.ru/forum/150-594163-1
У ТЕБЯ ЕСТЬ ИДЕЯ ДЛЯ ПРОГРАММЫ, НО САМ ТЫ НЕ МОЖЕШЬ НАПИСАТЬ КОД? ПИШИ МНЕ
Сообщение отредактировал Demy - Воскресенье, 17.12.2017, 14:05 |
|
|
|
[dev]Marvin |
Дата: Понедельник, 18.12.2017, 00:16 | Сообщение # 3
|
Новичок
Сообщений: 28
Статус: Offline
|
К посту выше. Но класс не советую юзать, так как у него есть волшебное свойство - выдавать неизвестные ошибки, такое случается с некоторыми версиями винды. Код для примера:
Код json := http_request({"request":{"method":"messages.get","data":{"ts":0,"warns":true,"token":user.token}}}) MsgBox, % json["response"]["messages"][1]["message_id"]
Код функции:
Код http_request(params) { ComObjError(false) http := ComObjCreate("WinHttp.WinHttpRequest.5.1") http.Open("POST", "http://domain.ltd", true) http.SetRequestHeader("User-Agent", "not-bot, not-hacker") http.SetRequestHeader("Content-Type", "application/json") http.SetRequestHeader("Accept-Encoding", "gzip, deflate") http.Send(BuildJson(params)) http.WaitForResponse() return ParseJson(http.ResponseText) }
Сообщение отредактировал [dev]Marvin - Понедельник, 18.12.2017, 00:31 |
|
|
|
laduhaaa |
Дата: Четверг, 21.12.2017, 16:16 | Сообщение # 4
|
Новичок
Сообщений: 2
Статус: Offline
|
[dev]Marvin, Call to nonexistent function.
Добавлено (21.12.2017, 16:16) --------------------------------------------- Demy, скачал класс, паршу обычный объект через JSON.dump(), проверяю строка выдаеться такой какой она должна быть. Но сервер не хочет вносить в базу данных, и выдает мол неожиданный символ # на позиции 0.
#Include Json.ahk
Код URL := "http://localhost:8000/createPlayer" HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HttpObj.Open("POST", URL, 0) HttpObj.SetRequestHeader("Content-Type", "application/json")
json_str := {name: "Vasya_ Petrov"}
str_for_test:= JSON.Dump(json_str)
Body := json_str HttpObj.Send(JSON.Dump(json_str))
MsgBox, %str_for_test% Result := HttpObj.ResponseText Status := HttpObj.Status msgbox % "status: " status "`n`nresult: " result Проблема не в сервере, я проверял через postman, данные нормально вносяться
Сообщение отредактировал laduhaaa - Четверг, 21.12.2017, 16:20 |
|
|
|
[dev]Marvin |
Дата: Четверг, 21.12.2017, 23:01 | Сообщение # 5
|
Новичок
Сообщений: 28
Статус: Offline
|
laduhaaa, открываешь JSON.ahk, который я скинул Ищешь функции, которые там есть, их 3-4, тебе нужны функции, связанные с ParseJson/JsonParse, BuildJson/JsonBuild. И заменяешь их.
|
|
|
|