Проблемы с использованием HTTP POST с libsoup

Я пытаюсь войти на свой сервер tt-rss, используя libsoup. Начиная с версии 1.5.3 он поддерживает только HTTP POST для получения данных. В основном мне нужно сделать что-то подобное с libsoup:

curl -d '{"op":"login","user":"you","password":"xxx"}' http://example.dom/tt-rss/api/

Но все примеры кода, написанные в vala с использованием POST, устарели и больше не компилируются. Например, последний на этой странице, Transmission RPC Interface: https://wiki.gnome.org/Projects/Vala/JsonSample

Вот мой код:

var uri = "http://nas/tt-rss/api/";
var session = new Soup.Session ();
var message = new Soup.Message ("POST", uri);
var login = "{\"op\":\"login\",\"user\":\"USER\",\"password\":\"PASSWORD\"}";
message.set_request("", MemoryUse.COPY, login);
session.send_message (message); 
stdout.printf("%s \n", (string) message.response_body.flatten ().data);

Я всегда получаю ошибку:

Argument 3: Cannot convert from `string' to `uint8[]'

Спасибо за любую помощь заранее

с уважением, Ян


person Jan Lukas Gernert    schedule 20.08.2014    source источник


Ответы (1)


Soup.Message.set_request принимает массив байтов, uint8[], а не a string, как вы указали. Вы можете преобразовать string в массив байтов, используя член .data:

message.set_request("", MemoryUse.COPY, login.data);
person apmasell    schedule 20.08.2014