我有一个带有以下签名的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才能使=
停留?
答案 0 :(得分:0)
好吧,我已经发现curl "$server/Frob" -d '"some+data"' -H "Content-Type:application/json"
将数据导入body
,因为我的web api接受了application / json。不是最干净的解决方案,但我可能会最终解决这个问题。