我正在尝试使用libsoup登录我的tt-rss服务器。从版本1.5.3开始,它仅支持HTTP POST以接收数据。 基本上我只需要用libsoup做这样的事情:
curl -d '{"op":"login","user":"you","password":"xxx"}' http://example.dom/tt-rss/api/
但是使用POST在vala中编写的所有代码示例都已过时,不再编译。 例如,本页的最后一个,传输RPC接口: 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[]'
感谢您提前提供任何帮助
最好的问候, 扬
答案 0 :(得分:2)
Soup.Message.set_request采用字节数组uint8[]
,而不是string
,如您所提供的那样。您可以使用string
成员将.data
转换为字节数组:
message.set_request("", MemoryUse.COPY, login.data);