很抱歉这样问这个问题。我可以给你的感觉我希望你为我做代码。我已经花了一天的时间来编写代码发送一个http请求,其中包含一个带有版本控制的头:
对于版本控制,我使用来自Microsoft/aspnet-api-versioning项目的versioning by Media Type。
我的API部分工作正常,我可以请求正确的版本没有问题的 Postman :
您会看到下面这行“内容类型=应用程序/json; v=2.0”?在 Postman 上没有问题。用C#的HttpClient不可能做到。
让我复制粘贴在这里所有的解决方案,我尝试与他们的错误。我将编辑这个问题,每次我尝试一个新的解决方案。通过设施,但也更清楚,我将复制粘贴图像:
解决方案1:具有新内容的扩展方法=...
溶液1B:来自初学者Tejas
溶液1C:来自BeginnerTejas,但现在使用具有质量标头值的媒体类型
解决方案2:扩展方法用request.Headers.Add(...)
x1c4d 1x指令集
解决方案3:带有客户端的BaseProxy。DefaultRequestHeaders。TryAddWithoutValidation(...)似乎无法添加任何“内容类型”
解决方案4:带有客户端的BaseProxy。默认请求头。接受。添加(...)
指令集
解决方案5:请求.头.TryAddWithoutValidation(“内容类型”,“应用程序/json”);
2条答案
按热度按时间ruarlubt1#
你能试试这个吗?
rn0zuynd2#
当你不发送任何内容时,你不能(或者至少 * 不应该 *)使用
Content-Type
。对于GET
和DELETE
请求,使用Accept
头,如下所示:如果同时指定了两个标头,则先考虑
Content-Type
,再考虑Accept
。如果Accept
指定了具有一个版本的多个媒体类型,则匹配具有最高 * 质量 * 的媒体类型。不支持每个请求混合使用不同的版本(例如,发送2.0,但接收1.0)。当前也不支持协商具有一个版本的多个媒体类型(除了 * 质量 *)。