如何通过curl将数据发送到mvc4 Web服务

时间:2014-02-11 19:50:38

标签: c# curl

我有一个带有以下签名的mvc web api: public HttpResponseMessage Frob(string thing, [FromBody]string body)。我能够在体内获得非空值的唯一方法是发送带有前导=符号的数据。所以当我运行curl "$server/Frob" -d '=somedata'时,效果很好。

当我想要运行curl "$server/Frob" -d '=some+data'时会出现问题。 +转变为空间。没问题我说,我只会curl "$server/Frob" --data-urlencode '=some+data'。不,卷曲文档说

To be CGI-compliant, the <data> part should begin with a name followed by a 
separator and a content specification. The <data> part can be passed to curl 
using one of the following syntaxes:
[...]
=content

This will make curl URL-encode the content and pass that on. 
The preceding = symbol is not included in the data.
[...]

我可以通过perl或其他方式对内容进行编码,然后在=之前添加并发送,但必须有更好的方法!我是否需要对mvc web api进行更改,或者是否有一些curl voodoo才能使=停留?

1 个答案:

答案 0 :(得分:0)

好吧,我已经发现curl "$server/Frob" -d '"some+data"' -H "Content-Type:application/json"将数据导入body,因为我的web api接受了application / json。不是最干净的解决方案,但我可能会最终解决这个问题。