2009-06-10 4 views
4

可能性の重複:私は私の生のHTTPリクエストを与えるC#で書かれたカスタムHTTPサーバを持っている
Converting Raw HTTP Request into HTTPWebRequest ObjectC#の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 Frameworkに解析するために使用できるものがありますか?それとも手動で行う必要がありますか?

+0

意味しますか?私はそれに遭遇したことはありませんが、(おそらくどこかでHttpWebRequestの中で)それを行うフレームワークにいくつかのコードがなければならないと思います。 – samjudson

+0

ええと、しかし:-) –

答えて

3

この質問のように見える

乾杯here前に頼まれました。明らかにそれを行うための組み込みの方法はありません。

+0

ああ、あなたはそれに私を打つ。ありがとう:-) –

6

HttpMachine - Kayak dotNETのHTTPサーバーのコンポーネントを確認してください。 HttpMachineはコールバック駆動のHTTPパーサーです。あなたの食欲を濡らすこと

は、ここIHttpParserHandlerインタフェースです:あなたはHttpRequestのインスタンスにバイトのストリームを変換したい

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

私はこれを私の透明なプロキシで実装しました。それが動作するとき、それは素晴らしい作品です。しかし、そうでないと、ひどい死があります。 1文字が間違っていて、それは死んでいます。素晴らしいですが、優雅に失敗しません。 –

関連する問題