【问题标题】:HttpClient.SendAsync unsupported media typeHttpClient.SendAsync 不受支持的媒体类型
【发布时间】:2015-08-28 11:14:32
【问题描述】:

像往常一样,在 .NET 4.5 中,我使用 HttpClient 向 restful 服务(远程服务器)发送 get 请求

但是,这一次,它返回错误415 - Unsupported Media Type

我期待包含Content-Type = application/json 的请求标头。 而且我找不到正确设置 Content-Type 的方法。

任何人都对此案有经验或任何建议将不胜感激!

代码如下和httpResponseMessage.RequestMessage.Headers


更新 1

据我研究,我无法为 Content-Type 添加受限标头。由于这是 4.5 实现。这是正确的吗?

更新 2

我尝试添加

request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

但是它返回了Cannot send a content-body with this verb-type

【问题讨论】:

  • 您使用 SendAsync 然后执行 Result 的任何原因,这会阻止调用并破坏异步的目的?
  • 我只想要一个同步调用。有没有更好的办法?
  • 是的,不要使用异步版本。
  • 我没有看到 httpclient 的任何非异步发送。 .NET 4.5

标签: c# rest httpclient


【解决方案1】:

我猜您的服务器并没有抱怨您请求的无效内容类型,而是抱怨您发送该请求的内容类型。

你得到的

无法发送具有此动词类型的内容主体

似乎暗示您尝试发送 GET 请求。服务器需要带有正文的 GET 请求是相当不寻常的(尽管技术上 HTTP 协议允许这样做)。所以我最好的猜测是服务器有问题。

【讨论】:

  • 它不起作用,因为获取请求没有内容(request.Content = null)。即使可以,它也会返回“无法发送具有此动词类型的内容主体。”。动词类型 = 获取
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2015-06-02
  • 2015-06-17
  • 1970-01-01
  • 2014-05-10
  • 2019-08-02
相关资源
最近更新 更多