【问题标题】:HttpClient does not return Content-TypeHttpClient 不返回 Content-Type
【发布时间】:2016-06-06 12:45:42
【问题描述】:

我正在使用HttpClient 发送请求。服务器返回两个我想返回给客户端的标头。我是这样运行的:

 using (var client = new HttpClient())
 {
     var response = await client.GetAsync(DownloadUri + $"?path={path}&fileName={fileName}");
     // ...
 }

但在客户端我有 10 个标头,而服务器发送 12 个。 这是我在调试器中为response.Headers.ToString() 得到的:

Transfer-Encoding: chunked
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcQWxleFxEb2N1bWVudHNcdGZzXFVDRktcdnNuXGRldlxMYW5pdC5VQ0ZLLkZpbGUuU2VydmVyXEZpbGUuc3ZjXERvd25sb2Fk?=
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Credentials: true
Cache-Control: private
Date: Mon, 06 Jun 2016 12:19:09 GMT
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET

这就是我使用外部 Rest 客户端得到的结果:

Content-TypeContent-Disposition 丢失。 我如何通过HttpClient 获得它?

【问题讨论】:

  • 您没有发送任何 Accept-Headers,因此可能不会有压缩(但原始)响应,因此没有指定的内容类型。

标签: c# .net dotnet-httpclient


【解决方案1】:

您应该查看response.Content.Headers,您应该会在此处找到与内容相关的标题。有关所有内容标头类型的更多信息,请参见下面的 msdn 链接。

https://msdn.microsoft.com/en-us/library/system.net.http.headers.httpcontentheaders(v=vs.118).aspx

【讨论】:

    【解决方案2】:

    Content_type 是内容标头的一部分。所以你应该使用:

    response.Content.Headers;
    

    【讨论】:

      【解决方案3】:
        HttpResponseMessage response = await client.SendAsync(request);
        String sContentType = response.Content.Headers.ContentType.MediaType;
        Console.WriteLine($"Response ContentType: {sContentType}");
        //
        // Response ContentType: application/json
      

      【讨论】:

      • 请在此处解释您的代码的作用以及它与其他答案的不同/更好之处。
      • 这是将 ContentType 作为字符串返回的特定 C# 代码的完整示例,它显示了执行代码时输出的示例(在注释行中)。因此您可以这样做如果这就是您所需要的,则不必进一步研究该主题。其他答案只是将您指向答案。我相信,对于熟悉 C# 和相关主题的任何人来说,代码都很容易理解。
      猜你喜欢
      • 2016-04-25
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2013-06-03
      • 2012-05-19
      • 1970-01-01
      • 2016-01-23
      • 2012-05-27
      相关资源
      最近更新 更多