【问题标题】:Occasional response headers in C# HTTP RequestC# HTTP 请求中的偶尔响应标头
【发布时间】:2020-04-10 16:34:21
【问题描述】:

请求:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
String responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
Console.WriteLine(responseString);

回应:

{"code":"SUCCESS","details": 
    {"created_time":"","id":"xxxx"},  
    "message":"uploaded", 
    "status":"success"}
HTTP/1.1 200 OK 
Date: Wed, 18 Dec 2019 11:42:26 IST
Last-Modified: Wed, 18 Dec 2019 11:42:25 IST
Content-Type: application/json
Connection: Keep-Alive
Server: AWServer
Pragma: no-cache
Cache-Control: no-cache
Expires: 1

每当执行上述C#请求时,响应偶尔会包含标头(HTTP/1.1 200 OK...),当我只尝试获取正文部分时({“code”....}单独(response.GetResponseStream())。这是预期的行为吗?

【问题讨论】:

  • “偶尔”和“标题”是什么意思?
  • 如果你需要像 Date 和 LastModified 这样的标题,你可以试试 Request.Headers.Get("Date") HttpWebResponse。上次修改时间

标签: c# .net json.net httpwebrequest httpwebresponse


【解决方案1】:

看看the basic article on http headers

HTTP 标头允许客户端和服务器通过 HTTP 请求或响应传递附加信息。 HTTP 标头由其不区分大小写的名称后跟冒号 (:),然后是其值组成。忽略值之前的空格。

标题是附加信息。我猜由于您遗漏了 url 以及 Request 和 url 的整个创建过程,这意味着有些响应有 Headers 而有些则没有。这取决于 api 或 Web 服务器想要响应的其他非正文信息。

它在响应者而不是接收者的控制之下。

不要忽略它们:有时有趣的元数据来自标头。它不应该是data,而是有关它的信息,如编码、CORS 信息等。

last modified header link date header link

【讨论】:

  • 已更新问题以供澄清。 response.GetResponseStream() 应该只返回响应体,对吧?为什么标题包含在正文中?
猜你喜欢
  • 2019-04-29
  • 2014-12-18
  • 2021-07-08
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多