从原始响应中删除HTTP标头

时间:2010-04-28 14:49:26

标签: c# regex httpresponse http-headers

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

  

HTTP / 1.1 200 OK
  日期:2010年4月28日星期三格林尼治标准时间14:39:13   到期:-1
  Cache-Control:private,max-age = 0
  内容类型:text / html;字符集= ISO-8859-1
  Set-Cookie:PREF = ID = e2bca72563dfffcc:TM = 1272465553:LM = 1272465553:S = ZN2zv8oxlFPT1BJG; expires =星期五,2012年4月27日14:39:13 GMT;路径= /;域= .google.co.uk
  服务器:gws
  X-XSS-Protection:1;模式=块
  连接:关闭

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

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

编辑:

我正在使用SOCKS来提出请求;这就是我得到原始回应的原因。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

如果您使用HttpWebrequest课程,则会返回HttpWebResponse个对象,而该对象又包含Headers的集合。然后,您可以删除它们,解析它们或随意执行任何操作。

答案 2 :(得分: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;
    }