cURL - 设置内容类型标头不起作用?

问题描述 投票:0回答:2

我正在尝试将 cURL 请求的内容类型标头设置为 application/json。

这是我在 cmd 中使用的请求(我省略了 Json-Body):

curl -v -X POST http://localhost:40071/api/Sale --header 'Content-Type: application/json' -d '{[Json Body]}'

运行此命令时,cURL 将记录以下内容:

Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 127.0.0.1:40071...
* Connected to localhost (127.0.0.1) port 40071 (#0)
> POST /api/Sale HTTP/1.1
> Host: localhost:40071
> User-Agent: curl/7.79.1
> Accept: */*
> Content-Length: 332
> Content-Type: application/x-www-form-urlencoded
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 500 Internal Server Error
< Date: Tue, 09 Nov 2021 11:18:33 GMT
< Content-length: 0
<

我的 REST 服务器由于 HTTP 415 不支持的媒体类型而遇到异常。

cURL 似乎没有使用我的“--header”参数? 因为日志显示选择了 Content-Type: application/x-www-form-urlencoded。

我也尝试过使用缩写参数“-h”。

rest curl content-type
2个回答
0
投票

似乎是重复的问题,有关更多示例,请参阅此处。

如何通过 cURL 调用使用 HTTP 请求发送标头?

curl -X POST mockbin.org/request -H "Accept: application/json"

0
投票

我见过这个。问题不在于服务器端 - 如果您设置为详细,您会看到您正在发送

Content-Type: application/x-www-form-urlencoded
而不是您指定的内容。

我发现你的curl选项中的--http1.1可以让问题消失

© www.soinside.com 2019 - 2024. All rights reserved.