使用带有libsoup的HTTP POST时出现问题

时间:2014-08-20 12:43:09

标签: rss vala

我正在尝试使用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[]'

感谢您提前提供任何帮助

最好的问候, 扬

1 个答案:

答案 0 :(得分:2)

Soup.Message.set_request采用字节数组uint8[],而不是string,如您所提供的那样。您可以使用string成员将.data转换为字节数组:

message.set_request("", MemoryUse.COPY, login.data);