C#HTTP请求解析器

时间:2009-06-10 12:40:07

标签: c# .net http

  

可能重复:
  Converting Raw HTTP Request into HTTPWebRequest Object

我有一个用C#编写的自定义HTTP服务器,它给我原始的HTTP请求......

GET /ACTION=TEST HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

我可以使用.NET框架中的某些东西来解析它,还是我必须手动完成?

干杯

2 个答案:

答案 0 :(得分:6)

签出HttpMachine - dotNET的Kayak HTTP服务器的一个组件。 HttpMachine是一个回调驱动的HTTP解析器。

为了满足您的胃口,这是IHttpParserHandler界面:

using System
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HttpMachine
{
    public interface IHttpParserHandler
    {
        void OnMessageBegin(HttpParser parser);
        void OnMethod(HttpParser parser, string method);
        void OnRequestUri(HttpParser parser, string requestUri);
        void OnFragment(HttpParser parser, string fragment);
        void OnQueryString(HttpParser parser, string queryString);
        void OnHeaderName(HttpParser parser, string name);
        void OnHeaderValue(HttpParser parser, string value);
        void OnHeadersEnd(HttpParser parser);
        void OnBody(HttpParser parser, ArraySegment<byte> data);
        void OnMessageEnd(HttpParser parser);
    }
}

答案 1 :(得分:3)

here之前,似乎已经询问了这个问题。显然没有内置的方法可以做到。