Как правильно отправить запрос JSON POST с помощью Gnomes libsoup
У меня проблемы с отправкой запросов POST с помощью библиотеки Gnome libsoup. GET-запросы Я отлично справляюсь Я просто не знаю, как получить рабочий почтовый запрос.
_httpSession = new Soup.Session();
let url = "http://localhost:3000/api/auth/register/org";
var body = {body:"?how to add"}
let message = Soup.Message.new('POST', url);
message.set_request('application/json', 2,body);
_httpSession.queue_message(message, function (_httpSession, message){
//log res
global.log(message.response_body.data)
});
Это то, что у меня есть прямо сейчас. Я не знаю, как добавить тело почтового запроса. В документации сказано, что для set_request требуется 4 параметра, но я получаю сообщение об ошибке, в котором говорится, что он ожидает 3, если я добавлю body.length.
2 ответа
Что касается разного количества параметров, проверьте, соответствует ли документация используемомуSoup
-версия:
log(`Soup version: ${Soup.get_major_version()}.${Soup.get_minor_version()}`);
Что касается добавления полезной нагрузки к вашему сообщению, строка должна быть преобразована в массив байтов (см. здесь ) :
var body = `{"user":"tom","pass":"1234"}`;
const encoder = new TextEncoder();
message.set_request('application/json', 2, encoder.encode(body));
_httpSession = new Soup.Session();
let url = "http://localhost:3000/api/auth/register/org";
var body = `{"user":"tom","pass":"1234"}`
let message = Soup.Message.new('POST', url);
message.set_request('application/json', 2,body);
_httpSession.queue_message(message, function (_httpSession, message){
//log res
global.log(message.response_body.data)
});
Для любого, кто пытается это понять, тело должно быть строкой, созданной так, чтобы выглядеть как объект json. Все примеры, которые я видел, просто говорили
body="user=this"
что неверно.