繁体   English   中英

如何将原始 HTTP 响应解析为 HttpListenerResponse?

[英]How to parse a raw HTTP response as HttpListenerResponse?

如果我有一个原始 HTTP 响应作为字符串:

HTTP/1.1 200 OK  
Date: Tue, 11 May 2010 07:28:30 GMT  
Expires: -1  
Cache-Control: private, max-age=0  
Content-Type: text/html; charset=UTF-8  
Server: gws  
X-XSS-Protection: 1; mode=block  
Connection: close

<!doctype html><html>...</html>

有没有一种简单的方法可以将其解析为HttpListenerResponse对象? 或者至少是某种 .NET 对象,所以我不必处理原始响应。

我目前正在做的是提取标头键/值对并将它们设置在HttpListenerResponse 但是有些headers 无法设置,然后我不得不剪掉响应的主体并将其写入OutputStream 但是身体可以被压缩,或者它可以是一个图像,我还不能开始工作。 并且有些响应到处都包含随机字符,这看起来像是编码问题。 这很麻烦。

我收到原始响应,因为我使用 SOCKS 发送 HTTP 请求。 我正在开发的程序基本上是一个 HTTP 代理,它可以像 Privoxy 一样通过 SOCKS 代理路由请求。

看起来没有简单的方法来转换它们。 这些文章帮助:

如何实现自定义代理服务器?

http://www.jeffcrossman.com/2009/08/27/using-httplistener-to-build-a-proxy

我最终做了一些非常相似的事情。

也许你想看看WebclientResponseHeaders属性:

WebClient wc = new WebClient();
wc.DownloadStringAsync(new Uri("http://www.foo.com"));

WebHeaderCollection myWebHeaderCollection = myWebClient.ResponseHeaders;

for (int i=0; i < myWebHeaderCollection.Count; i++)             
    Console.WriteLine ("\t" + myWebHeaderCollection.GetKey(i) + 
                       " = " + myWebHeaderCollection.Get(i));

请告诉我这是否不是您要搜索的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM