gpt4 book ai didi

asp.net-mvc - WebApi - 请求包含实体主体但没有 Content-Type header

转载 作者:行者123 更新时间:2023-12-03 10:00:13 25 4
gpt4 key购买 nike

我正在尝试接受 application/x-www-form-urlencoded我的 webApi 端点上的数据。当我向 PostMan 发送明确设置了此 Content-Type header 的请求时,我收到错误消息:

The request contains an entity body but no Content-Type header



我的 Controller :
    [HttpPost]
[Route("api/sms")]
[AllowAnonymous]
public HttpResponseMessage Subscribe([FromBody]string Body) { // ideally would have access to both properties, but starting with one for now
try {
var messages = _messageService.SendMessage("flatout2050@gmail.com", Body);
return Request.CreateResponse(HttpStatusCode.OK, messages);
} catch (Exception e) {
return Request.CreateResponse(HttpStatusCode.InternalServerError, e);
}
}

postman 帽:

enter image description here

我究竟做错了什么?

最佳答案

如果您查看请求消息,您可以看到 Content-Type header 是这样发送的。
Content-Type: application/x-www-form-urlencoded, application/x-www-form-urlencoded
因此,您正在添加 Content-Type手动 header ,POSTMAN 也在添加它,因为您选择了 x-www-form-urlencoded 选项卡。

如果您删除已添加的标题,它应该可以工作。我的意思是你不会得到错误,但是由于简单的类型参数[FromBody]string Body,绑定(bind)将不起作用.您将需要有这样的操作方法。

public HttpResponseMessage Subscribe(MyClass param) { // Access param.Body here }
public class MyClass
{
public string Body { get; set; }
}

相反,如果您坚持绑定(bind)到 string Body , 不要选择 x-www-form-urlencoded 选项卡。而是选择原始选项卡并发送 =Test 的正文.当然,在这种情况下,您必须手动添加 `Content-Type: application/x-www-form-urlencoded' header 。然后,正文(Test)中的值将正确绑定(bind)到参数。

enter image description here

关于asp.net-mvc - WebApi - 请求包含实体主体但没有 Content-Type header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26249005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com