如果我将原始HTTP响应作为字符串:
HTTP / 1.1 200 OK
日期:2010年5月11日星期二07:28:30 GMT
到期:-1
Cache-Control:private,max-age = 0
内容类型:text / html;字符集= UTF-8
服务器:gws
X-XSS-Protection:1;模式=块
连接:关闭
<!doctype html><html>...</html>
我可以通过简单的方法将其解析为HttpListenerResponse
对象吗?或者至少是某种.NET对象,所以我不必使用原始响应。
我目前正在做的是提取标题键/值对并在HttpListenerResponse上设置它们。但是有些头文件无法设置,然后我必须剪切响应的主体并将其写入OutputStream。但是身体可以被gzipped,或者它可能是一个图像,我还无法工作。并且一些响应在任何地方都包含随机字符,这看起来像编码问题。这很麻烦。
我正在获得原始响应,因为我正在使用SOCKS发送HTTP请求。我正在处理的程序基本上是一个HTTP代理,它可以通过SOCKS代理路由请求,就像Privoxy那样。
答案 0 :(得分:2)
看起来没有简单的方法来转换它们。这些文章帮助:
How to implement custom proxy server?
http://www.jeffcrossman.com/2009/08/27/using-httplistener-to-build-a-proxy
我最终做了一些非常相似的事情。
答案 1 :(得分:1)
也许您想看一下Webclient
的{{3}}属性:
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));
如果那不是您要搜索的内容,请告诉我。