我的研究表明这是一件坏事。Content-Type明确地用于具有内容的消息,例如POST,PUT和(也许?)PATCH。
不幸的是,我公司的另一个团队决定,他们将要求对REST API发出的所有HTTPS请求都使用Content-Type,而且这种改变的可能性接近于零,尽管这违反了RFC 7231第3.1.5.5节。
(For参考,他们决定使用“Content-Type”来指定调用期望使用的API版本。
当我试着去做
HttpClient myHttpClient = new HttpClient() //code simplified for brevity
myHttpClient.DefaultRequestHeaders.Add("Content-Type", "application/json; version=3.0");
我得到一个运行时异常:
当我尝试:
myHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; version=3.0");
Content-Type头似乎没有添加。
我能做什么?
2条答案
按热度按时间b4lqfgs41#
我强烈建议不要这样做,但是我没有看到一种方法可以使用
HttpRequestHeaders
错误地使用允许的头。当它是一个标准的、众所周知的头时,TryAddWithoutValidation
实际上并没有跳过验证头是可以接受的。所以,你可以使用反射来作弊:
请注意,最好的答案可能是将头添加到每个
HttpRequestMessage
。olhwl3o22#
这个语法是最常见的,它被使用了上千次,并且工作正常。唯一的问题是我不确定你是否真的需要它。JSON默认是接受格式