我正在使用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");
答案 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;中有一个非常好的实现。在这个网站上搜索也会有一些很好的例子。