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

C# 如何将原始HTTP响应解析为HttpListenerResponse?,c#,proxy,httpresponse,socks,httplistener,C#,Proxy,Httpresponse,Socks,Httplistener,如果我将原始HTTP响应作为字符串: HTTP/1.1200正常 日期:2010年5月11日星期二格林尼治标准时间07:28:30 过期:-1 缓存控制:专用,最大年龄=0 内容类型:text/html;字符集=UTF-8 服务器:gws X-XSS-Protection:1;模式=块 连接:关闭 ... 有没有一种简单的方法可以将其解析为HttpListenerResponse对象?或者至少是某种.NET对象,这样我就不必处理原始响应 我目前正在做的是提取标题键/值对,并在HttpListe

如果我将原始HTTP响应作为字符串:

HTTP/1.1200正常
日期:2010年5月11日星期二格林尼治标准时间07:28:30
过期:-1
缓存控制:专用,最大年龄=0
内容类型:text/html;字符集=UTF-8
服务器:gws
X-XSS-Protection:1;模式=块
连接:关闭
...
有没有一种简单的方法可以将其解析为
HttpListenerResponse
对象?或者至少是某种.NET对象,这样我就不必处理原始响应

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


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

也许您想看看
网络客户端的属性:

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));
WebClient wc=新的WebClient();
wc.DownloadStringAsync(新Uri(“http://www.foo.com"));
WebHeaderCollection myWebHeaderCollection=myWebClient.ResponseHeaders;
for(int i=0;i

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

似乎没有简单的方法来转换它们。这些文章有助于:


我最后做了一些非常类似的事情。

Hmm请重新阅读您的问题,我认为如果您只是得到一个原始响应,并且必须手动建立您的响应,那么这可能对您没有帮助……是的,我目前正在使用HttpListenerResponse.Headers.Set(key,value),这是相同的。但是谢谢你的回复。