在Casablanca发布文本请求(C ++ REST SDK)

时间:2013-06-14 12:16:02

标签: visual-c++ httpclient casablanca

我正在使用C ++ Rest SDK(代号为“Casablanca”)在Visual C ++ 2012中编写客户端代码。 我创建了一个客户端,并希望将文本字符串POST到服务器。但是,当我发送以下代码时,它正在编译但不发送发送请求。 当我删除“methods :: POST”之后的所有内容并发送空白的帖子请求时,它会被服务器发送和接收。 你能指导一下我的问题所在。有关此功能的文档可在Casablanca Documentation上找到。

pplx::task<http_response>resp = client.request(methods::POST,L"",L"This is the random text that I wish to send", L"text/plain");

4 个答案:

答案 0 :(得分:1)

我认为你在这里给出的用法看起来是正确的。 您的卡萨布兰卡是最新版本吗?请从这里查看:http://casablanca.codeplex.com/ 如果您确定您的测量结果准确无误,您可能需要创建一个最小的repro并在此处提交错误:http://casablanca.codeplex.com/workitem/list/basic

答案 1 :(得分:1)

我遇到了类似的问题,我的所有POST都在服务器上空白,经过几个小时的工作后,我找到了一个可能的解决方案。 我将默认内容类型更改为application/x-www-form-urlencoded,然后我开始传递值,例如data=text1&data2=text2

client.request(methods::POST,L"",L"data=text1&data2=text2", L"application/x-www-form-urlencoded");

答案 2 :(得分:0)

body参数必须是json :: value。

答案 3 :(得分:0)

我无法评论,所以我必须回答我的想法。我解决了这个问题:请求方法有一个重载,它将内容类型作为参数,这样你就不必更改代码了。

m_client->request(methods::POST, L"/statuses/update.json?" + url_encode(data),L"",L"application/x-www-form-urlencoded");

显然你必须实现url_encode方法,但这并不困难。在&#34; Cassablanca&#34;中有一个非常好的实现。在这个网站上搜索也会有一些很好的例子。