【发布时间】:2018-04-02 10:47:52
【问题描述】:
我正在与第三方 API 打交道,该 API 的调用在 GET 方法请求中需要 Content-Type 标头,但当标头集合包含“Content-Length”时返回错误响应。添加 Content-Type 标头的唯一方法是添加一个继承/实现 IHttpContent 接口的类(我使用 HttpStringContent 和 string.empty 作为字符串内容)。问题在于,添加空白 HttpStringContent 会增加 ContentLength。即使该标头的值为“0”,他们的服务器也会非常生气。在我调试时,Content-Length 不会显示在标头集合中,但是当我通过 Postman 或 Burp Proxy 运行我的应用程序时,Content-Length 标头就在那里。我已经尝试盲目地使用 .Remove 来摆脱 Content-Length 标头,但这不起作用。
我已经看到有关添加 Content-Length 的 StackOverflow 问题,但这不是我需要/想要的。有没有办法在 GET 请求中包含 Content-Type 标头,没有具有 Content-Length 标头?或者....有没有办法删除 Content-Length 标头?我尝试创建自己的实现 IHttpContent 的内容类,但我遇到了 IAsyncOperationWithProgress 的实现。
我知道这不是标准的,这就是为什么我在这方面遇到这么多困难。我也试过 Flurl,它也没有添加 Content-Type 标头。
TL;DR:Content-Type (application/json) 是必需的,并且 Content-Length 会导致 API 错误(即使它为 0)。如何在没有 Content-Length 的情况下将 Content-Type 添加到 Windows.Web.Http.HttpRequestMessage/HttpClient?
编辑:为澄清起见,这是一个 UWP 应用程序
【问题讨论】:
标签: c# .net uwp http-headers httprequest