2014-02-11 109 views
0

我有一個帶有以下簽名的mvc web api: public HttpResponseMessage Frob(string thing, [FromBody]string body)。我已經能夠獲得一個非空值的唯一方法是發送帶有前導=符號的數據。所以當我運行curl "$server/Frob" -d '=somedata'時,效果很好。如何通過curl發送數據到mvc4 web服務

問題出現在我想運行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進行更改,或者是否存在捲曲伏都教使=停留?

回答

0

嗯,我已經知道curl "$server/Frob" -d '"some+data"' -H "Content-Type:application/json"獲取數據到body,因爲我的web api接受application/json。不是最乾淨的解決方案,但我最終可能會遇到的問題。