我正在尝试编写一个API来处理来自三叶草的web钩子文章,它们的标题指定了内容类型: application/json
由于某些原因,我的HttpPost方法拒绝了带有404错误的帖子(我假设这是我的方法),只要我的内容类型不是application/json,我就可以将它发布到我的端点--只要我的内容类型不是application/json--只要切换到该类型,我就可以得到404。
我在这里缺少一些基本的东西:/有什么想法吗?
如果我发布(使用Reqbin),我的端点接受并返回200 OK
POST /auctionapi/Auction HTTP/1.1
Host: www.someweb.com
Content-Length: 60
{"verificationCode": "b860be7e-6ac4-4b56-8ac6-f44cf238a296"}如果我改变内容类型我得到404.
POST /auctionapi/Auction HTTP/1.1
Host: www.someweb.com
Content-Type: application/json
Content-Length: 60
{"verificationCode": "b860be7e-6ac4-4b56-8ac6-f44cf238a296"}我的密码..。
[Route("[controller]")]
[ApiController]
public class AuctionController : ControllerBase
{
private readonly PCSOAuctionsContext _context;
public AuctionController(PCSOAuctionsContext context)
{
_context = context;
}
[HttpPost("receive")]
public async Task<IActionResult> receive()
{
return StatusCode(200, "Thanks for using the API");
}
}发布于 2022-08-16 17:43:58
尝试这样做,看看这是否解决了404。HttpPost被发送到json的内容类型,但是您的方法没有设置来接收它,因此它会404,因为找不到合适的路由。
[Route("pcsoauctionapi/[controller]")]
[ApiController]
public class AuctionController : ControllerBase
{
private readonly PCSOAuctionsContext _context;
public AuctionController(PCSOAuctionsContext context)
{
_context = context;
}
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "PCSO Auction API", "Online" };
}
[HttpPost("receive")]
public async Task<IActionResult> receive([FromBody] object jsonData)
{
return StatusCode(200, "Thanks for using the API");
}
}我刚刚测试了我的上述方法,它工作得很好。所以你的三叶草请求出了问题。这是自负的结果。

这不应该有什么不同,但不要设置内容长度,然后尝试发送。你也可以发卷曲要求三叶草正在做。这肯定会揭示问题在哪里。这是我的卷发要求。
curl -X 'POST' \
'https://localhost:7777/api/V1/receive' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{"verificationCode": "b860be7e-6ac4-4b56-8ac6-f44cf238a296"}'https://stackoverflow.com/questions/73377806
复制相似问题