1

假设我们向 URL 发出请求并返回原始响应,如下所示:

HTTP/1.1 200 OK
日期:2010 年 4 月 28 日星期三 14:39:13 GMT
过期时间:-1
缓存控制:私有,max-age=0
内容类型:文本/html;charset=ISO-8859-1
Set-Cookie: PREF=ID=e2bca72563dfffcc:TM=1272465553:LM=1272465553:S=ZN2zv8oxlFPT1BJG; 过期=格林威治标准时间 2012 年 4 月 27 日星期五 14:39:13;路径=/; domain=.google.co.uk
服务器:gws
X-XSS-Protection:1;模式=块
连接:关闭

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

从 C# 的响应中删除 HTTP 标头的最佳方法是什么?使用正则表达式?将其解析为某种 HTTPResponse 对象并仅使用正文?

编辑:

我正在使用 SOCKS 提出请求;这就是为什么我得到原始响应。

4

3 回答 3

4

标题和正文由空行分隔。没有 RE 真的很容易做到。只需搜索第一个空行。

于 2010-04-28T14:52:39.363 回答
1

请注意,使用 substring 方法会给您留下一个前导回车符。我用这个:

 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;
    }
于 2010-06-12T04:40:38.460 回答
1

如果您使用HttpWebrequest类,则会返回一个HttpWebResponse对象,该对象又包含Headers的集合。然后,您可以删除它们、解析它们或对它们做任何您想做的事情。

于 2010-04-28T14:57:29.497 回答