提问者:小点点

ASP中的ContentType应用程序/json。NETWebAPI


我正在使用ASP构建我的第一个WebAPI。NETMVC4WebAPI。

请求必须使用应用程序/json ContentType以utf-8为字符集发送。

我的POST方法如下所示:

    public HttpResponseMessage Post([FromBody]string value)
    {
        return new HttpResponseMessage(HttpStatusCode.OK);
    }

无论何时发送POST请求,参数“value”都为null。请求正文包含Json:{“name”:“test”}

我更喜欢将Post方法的参数设置为包含Json的字符串或JObject类型(来自Json.NET库)。我如何做到这一点?这可能吗?


共1个答案

匿名用户

最简单的方法是直接从请求中获取原始字符串。内容:

public async Task<HttpResponseMessage> Post()
{
    string value = await Request.Content.ReadAsStringAsync();

    return new HttpResponseMessage(HttpStatusCode.OK);
}

有一种方法可以让ASP. NET Web Api将您的请求体视为字符串内容,但是为了做到这一点,内容必须是=value格式的,在您的情况下是这样的:

={ "name":"test" }

您可以通过以下jQuery代码实现类似的功能(例如):

$.post('api/values', '=' + JSON.stringify({ name: 'test' }));

在这种情况下,你可以从你的问题中使用签名。

最后,始终可以选择创建自己的MediaTypeFormatter,以替换默认的JsonMediaTypeFormatter,并使其始终将内容反序列化为JObject。您可以在此处和此处阅读有关创建和注册MediaTypeFormatter的更多信息。