当前位置: 首页 > 知识库问答 >
问题:

对本地IIS 8.0的HttpClient请求在响应中未生成预期的头

时修贤
2023-03-14

我向运行在IIS中的本地网站提出以下请求

var httpRequestMessage = new HttpRequestMessage();
httpRequestMessage.RequestUri = new Uri("http://localhost:8081/");
httpRequestMessage.Method = HttpMethod.Get;

var response = new HttpClient().SendAsync(httpRequestMessage).Result;

这将生成以下响应头:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Date: Mon,03 Jun2013 22:34:25GMT
ETag:"50c7472eb342ce1:0"
Server: Microsoft-IIS/8.0
X-Powerd-By: ASP. NET

通过Fiddler发出的相同请求会产生以下响应头(我强调了不同之处):

HTTP/1.1 200 OK
Content-Type: text/html
最后修改:Fri,26 Apr2013 19:20:58GMT
Accept-Ranges: bytes
ETag:"50c7472eb342ce1:0"
Server: Microsoft-IIS/8.0
X-Powerd-By: ASP. NET
Date: Mon,03 Jun2013 22:29:34GMT
内容长度: 10

为什么响应标题会有所不同
我是否正确使用了HttpClient(除了我正在同步调用Send之外)?

共有1个答案

汤嘉平
2023-03-14

TL; DR;

要访问所有响应标头,您需要同时阅读HttpResseMessage。报头和报头。内容。标头属性。

长答:

这,基本上:

var response = new HttpClient().GetAsync("http://uri/").Result;
var allHeaders = response.Headers.Union(response.Content.Headers);

foreach (var header in allHeaders)
{
    // do stuff
}

我认为这有两个问题:

  • Headers属性的命名不正确:它实际上应该是SomeHeadersAllHeadersExceptContentHeaders。(我的意思是,真的,当你看到一个名为Headers的属性时,你希望它返回所有的头还是一些头?我很确定它们违反了它们自己的框架设计准则。)
 类似资料:
  • 问题内容: 我在使用ngResource调用Amazon Web Services上的REST API时遇到此错误: XMLHttpRequest无法加载 http://server.apiurl.com:8000/s/login?login=facebook。对预检请求的响应未通过访问控制检查:在所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访

  • 我如何才能为并行请求获得相同的性能?这是线程池问题吗?

  • 我正在尝试进行第三方授权。当我向服务器发送一个POST请求时,它会发送HTML作为响应。

  • 问题内容: 我在使用ngResource调用Amazon Web Services上的REST API时遇到此错误: XMLHttpRequest无法加载http://server.apiurl.com:8000/s/login?login=facebook。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“h

  • 概述 Django 使用Request 对象和Response 对象在系统间传递状态。 当请求一个页面时,Django会建立一个包含请求元数据的 HttpRequest 对象。 当Django 加载对应的视图时,HttpRequest 对象将作为视图函数的第一个参数。每个视图会返回一个HttpResponse 对象。 本文档对HttpRequest 和HttpResponse 对象的API 进行说

  • 在SpringMVC项目中,客户机发送一个带有序列化对象的请求,客户机本身是一个小程序,所以它不希望收到一个web页面作为响应,而是一个带有字符串对象的响应,该响应将告诉他这是成功还是失败。那么解决方案是什么呢?我想在@Controller中使用返回void的方法,或者返回不存在页面的方法?(在这两种情况下,我还想知道是否有回复给客户)