2010-05-11 51 views
6

如果我有一個原始的HTTP響應作爲一個字符串:如何將原始HTTP響應解析爲HttpListenerResponse?

HTTP/1.1 200 OK
日期:星期二,2010 5月11日7時28分三十〇秒GMT
截止日期:-1
的Cache-Control :private,max-age = 0
Content-Type:text/html; charset = UTF-8
服務器:gws
X-XSS-Protection:1;模式=塊
連接:關閉

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

有一個簡單的辦法,我可以解析它變成一個HttpListenerResponse對象?或者至少是某種.NET對象,所以我不必使用原始響應。

我現在正在做的是提取標題鍵/值對並在HttpListenerResponse上設置它們。但是一些頭文件不能設置,然後我必須剪掉響應的主體並將其寫入OutputStream。但身體可能會被壓縮,或者它可能是一個圖像,我現在還無法工作。一些響應在任何地方都包含隨機字符,這看起來像是一個編碼問題。這很麻煩。

我得到一個原始響應,因爲我使用SOCKS來發送HTTP請求。我正在開發的程序基本上是一個HTTP代理,可以通過SOCKS代理路由請求,就像Privoxy一樣。

回答

1

也許你想看看在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)); 

請告訴我,如果心不是你正在尋找。

+1

嗯剛剛重讀你的問題,我認爲這可能無法幫助你,如果你只是得到一個原始的答覆,並且必須建立你的答覆手... – 2010-05-11 08:06:41

+0

是啊,我目前正在使用HttpListenerResponse.Headers.Set關鍵,價值),這是一回事。但是,謝謝你的回覆。 – Edgar 2010-05-11 08:23:20