【发布时间】:2018-05-17 19:15:48
【问题描述】:
我正在使用一个设计不佳的 API,在它的缺陷中,它有一个特定的端点,不应提供特定的自定义标头,而实际上所有其他端点都需要它。结果,它被包含在DefaultRequestHeaders 中,所以我不需要在每个请求中手动添加它。
但是,现在,对于这个特定的端点,我需要删除它,我不确定如何或是否可能。使事情有些复杂化,我正在处理一个单例范围的HttpClient 实例,所以任何与DefaultRequestHeaders 混在一起的事情都是不可行的。换句话说,我不能做一些像临时删除标头然后在请求之后将其重新添加回来的事情,因为这可能会影响正在发出的其他并发请求。令人沮丧的是,即使我将SendAsync 与自定义HttpRequestMessage 实例一起使用,HttpClient 仍然会添加标题。
此外,虽然它会起作用,但我真的不希望在没有将标头添加到 DefaultRequestHeaders 的情况下注入 另一个 HttpClient 实例。在同一个类中使用两个不同的HttpClient 实例似乎是一个非常糟糕的主意,原因有很多。
我是不是运气不好,还是在过去一个小时内搜索了 Internet 后我错过了一些解决方案?
更新
我确实找到了使用自定义HttpRequestMessage 实例的东西,我可以通过将标题设置为HttpRequestMessage 上的空字符串来基本上清除标题。因为它是显式设置的,HttpClient 不会用默认版本覆盖它。这仍然意味着正在发送标头,但至少它实际上没有值。不过,如果存在更好的解决方案,仍然对它感兴趣。
【问题讨论】:
标签: c# dotnet-httpclient