加载和解析存储在文件中的HTTP响应

问题描述 投票:1回答:2

我有一个本地存储的文件,其中包含http请求的响应。看起来像这样:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Origin: http://www.pokemon.com
Cache-Control: max-age=3600, public
Content-Type: image/png
Date: Tue, 19 Apr 2016 17:33:04 GMT
Etag: "2542947452"
Expires: Tue, 26 Apr 2016 17:33:04 GMT
Last-Modified: Wed, 04 Jun 2014 14:59:14 GMT
Server: ECAcc (dca/247E)
X-Cache: HIT
Content-Length: 335685

‰PNG


IHDR   õ  V   ±NÛ‘      pHYs     šœ    cHRM  z%  €ƒ  ùÿ  €é  u0  ê`  :˜  o’_ÅF ËIDATx ÿÿ  ÿâd  ÿ              ÿ    _   n ÿ #                ÿ      ÿ                          ÿ          ÿÿ    ÿ                              ÿ      ÿ                      ÿ          ÿ            ÿ        ÿ      ÿ            ÿ        ÿ                      ÿ          ÿ          ÿ    ÿ        ÿ                      ÿ                              ÿ                ÿ    ÿ                  

我需要提取该有效负载并将其存储在单独的文件(在这种情况下为png文件)中我无法弄清楚如何将其加载到内存中,然后在HttpWebResponse或类似文件中进行相应的解析,因此我可以轻松访问属性。

我以为我可以使用WebRequest.Create打开文件,但是我显然遗漏了其他东西,因为它只接受一个url。有人可以给我一些提示吗?

c# http web httpwebrequest httpwebresponse
2个回答
1
投票

这是您推测的原始HTTP响应。标头后面有一个空白行,其余为实体有效负载。如果将有效载荷部分保存到文件中,该文件将为PNG,应为335685字节长(或者换句话说,删除空白行及其上方的所有内容)。


0
投票

有趣的问题,我花了一些时间研究https://github.com/dotnet/runtime,以研究如何创建System.Net.Http HttpWebResponse,但我看不到从流构造一个简单的方法。

[Here是创建并解析HttpResponseMessage的地方,它似乎与代表基础网络套接字而不是IO.Stream的SafeWinHttpHandle紧密结合在一起。

我看过的大多数测试用例都会构造一个响应,或者解析一行,而不是整个响应。

我认为重用System.Net.Http的响应解析器的最佳选择是创建一个返回文件的回送套接字。还有一个HttpClient伪造请求。

© www.soinside.com 2019 - 2024. All rights reserved.