2009-06-10 86 views
4

可能重复:
Converting Raw HTTP Request into HTTPWebRequest ObjectC#HTTP请求剖析

我有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框架中是否有某些东西可以用来解析它,或者我必须手工完成它?

干杯

+0

你的意思是你想的字节流转换为HttpRequest的实例?我从来没有遇到过,但我想在框架中必须有一些代码(可能是在HttpWebRequest中)。 – samjudson 2009-06-10 12:42:47

+0

不过你怎么样:-) – 2009-06-10 12:48:45

回答

3

貌似这个问题一直here之前有人问。显然没有内置的方法来做到这一点。

+0

啊,你打我吧。谢谢:-) – 2009-06-10 12:57:56

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); 
    } 
}