2010-04-28 113 views
1

比方說,我們對一個URL的請求,回到原始的反應,就像這樣:從原始響應刪除HTTP標頭

HTTP/1.1 200 OK
日期:星期三,2010年4月28日14 :39:13 GMT
Expires:-1
Cache-Control:private,max-age = 0
Content-Type:text/html; charset = ISO-8859-1
Set-Cookie:PREF = ID = e2bca72563dfffcc:TM = 1272465553:LM = 1272465553:S = ZN2zv8oxlFPT1BJG; expires = Fri,2012年04月27日14:39:13 GMT;路徑= /; domain = .google.co.uk
服務器:gws
X-XSS-Protection:1;模式=塊
連接:關閉

<!doctype html><html><head>...</head><body>...</body></html> 

什麼是從C#中的響應移除的HTTP標頭的最佳方法?用正則表達式?將其解析爲某種HTTPResponse對象並僅使用正文?

編輯:

我使用SOCKS來提出請求;這就是爲什麼我得到原始迴應。

+0

不是C#的人,所以我只是要評論:)我很確定這些.NET的東西的一些會有這樣做的設施。只是猜測:) – KevinDTimm 2010-04-28 14:53:23

+0

你是如何提出要求? – SLaks 2010-04-28 14:59:58

+0

我正在使用SOCKS。 – Edgar 2010-04-28 15:08:17

回答

4

標題和正文由空行分隔。沒有RE的話,這樣做更容易。只需搜索第一個空行。

+0

介意添加一個例子? :) – Edgar 2010-04-28 15:07:24

+1

是什麼樣的例子? int i = 0; foreach(響應中的字符串s)if(string.IsNullOrEmpty(s))break;別的我++; – Andrey 2010-04-28 15:12:44

+0

我想出了這個: if(responseString.IndexOf(「HTTP/1.1 200 OK」)> -1) responseString = responseString.Substring(responseString.IndexOf(「\ r \ n \ r \ n」)); – Edgar 2010-04-28 15:37:43

1

如果使用HttpWebrequest類,則會返回一個HttpWebResponse對象,而該對象又包含Headers的集合。然後,您可以刪除它們,解析它們或按照您的意願做任何事情。

+0

我希望.NET有這樣的SOCKS。 :( – Edgar 2010-04-28 15:09:07

1

請注意,使用子字符串方法將使您返回前導回車。我用這個:

string HTTPHeaderDelimiter = "\r\n\r\n"; 
if (RawHTTPResponse.IndexOf("HTTP/1.1 200 OK") > -1) 
    { 
     HTTPPayload = RawHTTPResponse.Substring(RawHTTPResponse.IndexOf(HTTPHeaderDelimiter)+HTTPHeaderDelimiter.Length); 
    } 
    else 
    { 
     return; 
    } 
+0

感謝您的建議,我已經在做這樣的事情,但您已經格式化了一下。 – Edgar 2010-06-14 08:00:45