Vala - 如何用汤创建HTTP请求?

问题描述:

我有点失落与Vala文档。 我试图用soap lib对我的AJAX服务做POST请求,但没有运气。任何人都可以告诉我我做错了什么?Vala - 如何用汤创建HTTP请求?

string url = "http://myservice/ajax.php";   

// create an HTTP session 
var session = new Soup.Session(); 
var message = new Soup.Message ("POST", url); 

//Setting params and request 
var params = "action=call&method=get_monuments";  
Soup.MemoryUse buffer = Soup.MemoryUse.STATIC; 

//(Error here - Line 73) 
message.set_request ("application/x-www-form-urlencoded", buffer, params, params.length); 

// send the HTTP request and wait for response 
session.send_message (message); 
stdout.write(message.response_body.data); 

编译下降以下错误:

/home/ibsenleo/valaprojects/test/main.vala(73,73): Error: Argument 3: Cannot convert from `string' to `uint8[]' 

我敢肯定是一些关于请求参数和数据类型,但我无法找到一些有用的例子。

+0

这不是C代码! – Olaf

+0

错误消息非常明确。你有一个无法解决的类型错位。 – Olaf

Soup.Message.set_request的第三个参数是uint8[],而不是string,并且没有第四个参数。您可能需要像

message.set_request ("application/x-www-form-urlencoded", buffer, params.data); 

请参阅string.data

+0

太棒了!那是关键。对一些人来说很明显,但对我来说有时候有点神秘。我开始在vala中编程,通常会迷失在文档中。非常感谢。 – ibsenleo