如何将HTTP Post的整个主体作为单个字符串传递给WebAPI

时间:2013-06-25 10:33:25

标签: http-post asp.net-web-api

我有一个“查找”WebAPI服务,它返回查询表数据,如Salutations(Mr Mrs etc)和一些更长时间(例如业务类型)。

为了省去自己手动填充查找表的麻烦我添加了一个HttpPost方法,假设我可以使用Fiddler2简单地在主体中传递行分隔数据集。这样我就可以将数据列表粘贴到fiddler中,并在几秒钟内添加所有查找:

    // post api/lookup/lookupName
    [HttpPost]
    public void SaveNewLookups([FromUri(Name="id")] string lookupName, [FromBody]string body)

但现在我对内容类型的尝试很重要,当方法被命中时,body参数始终为null。

我通过使用以下代码来访问原始正文文本,但是让参数化版本工作会很好:

string body = Request.Content.ReadAsStringAsync().Result;

我不想为数据使用JSON或其他格式,因为这会破坏使用简单文本列表的目的。

2 个答案:

答案 0 :(得分:5)

'Content-Type: application/x-www-form-urlencoded'放入请求标头中,然后将字符串内容放入fiddler,前面带有等号(=)。例如:

=datavalue1
datavalue2

您应该在控制器中收到您的数据值:

datavalue1\r\ndatavalue2

答案 1 :(得分:4)

在格式化列表中添加PlainTextFormatter,并将内容类型设置为text/plain