提问人:Alberto Camino 提问时间:11/16/2023 最后编辑:Brian Tompsett - 汤莱恩Alberto Camino 更新时间:11/17/2023 访问量:46
在 GET 请求的 C# .NET Framework 中设置 Content-Type 标头 [duplicate]
Set Content-Type header in C# .NET Framework in GET request [duplicate]
问:
我需要调用外部 API 来获取信息。该方法是 GET,但他们这边有一个检查,可以发送有效的 Content-Type 媒体标头来工作(在本例中为 application/json)。
我知道在GET请求中不需要发送Content-Type,因为大多数时候(或应该)您不会传递正文数据。此方法就是这种情况,因为您不需要传递正文数据。但是,我需要设置以便该方法可以返回有效的响应,因为这是一个外部 API,他们无法更改它。Content-Type: application/json
如何在 GET 请求中设置此标头?我尝试了很多方法,但没有成功。我正在使用 ,但其他选项可能有效。HttpClient
答:
1赞
JineappleAra
11/17/2023
#1
对于 .NET Core:
您可以分配空内容并设置标题:
var request = new HttpRequestMessage(HttpMethod.Get, "https://google.com");
request.Content = new ByteArrayContent(Array.Empty<byte>());
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
await client.SendAsync(request);
对于 .NET Framework,请参阅注释
评论
0赞
Jeff B
11/17/2023
需要注意的是,您还可以将命名的 http 客户端设置为服务,并自动设置标头,以便您这样做;不必一遍又一遍地输入它。
0赞
JineappleAra
11/17/2023
@JeffB这适用于内容标题吗?我假设你会得到一个类似的错误,即 Content-Type 不是请求标头......
0赞
Jeff B
11/17/2023
它应该,标头在创建时与请求的内容无关。它可能会抱怨,因为您正在尝试添加一个技术上不需要 GET 请求的标头......
0赞
Alberto Camino
11/17/2023
@JineappleAra不起作用。我得到这个异常:无法发送具有此动词类型的内容正文
0赞
JineappleAra
11/17/2023
啊,对不起,我以为是 .NET Core,但现在我看到你写了 .NET Framework。在这种情况下试试这个答案?stackoverflow.com/a/41231353/21398414
评论