6

生の HTTP 応答を文字列として持っている場合:

HTTP/1.1 200 OK  
Date: Tue, 11 May 2010 07:28:30 GMT  
Expires: -1  
Cache-Control: private, max-age=0  
Content-Type: text/html; charset=UTF-8  
Server: gws  
X-XSS-Protection: 1; mode=block  
Connection: close

<!doctype html><html>...</html>

HttpListenerResponseオブジェクトに解析できる簡単な方法はありますか? または、少なくともある種の .NET オブジェクトを使用して、生の応答を処理する必要がないようにします。

私が現在行っていることは、ヘッダーのキーと値のペアを抽出し、HttpListenerResponse. ただし、一部のヘッダーは設定できないため、応答の本文を切り取ってOutputStream. しかし、本文は gzip されているか、まだ作業できない画像である可能性があります。また、一部の応答にはランダムな文字がどこにでも含まれており、これはエンコーディングの問題のようです。大変ですね。

SOCKS を使用して HTTP 要求を送信しているため、生の応答を取得しています。私が取り組んでいるプログラムは基本的に、Privoxy のように SOCKS プロキシ経由でリクエストをルーティングできる HTTP プロキシです。

4

2 に答える 2

2

それらを変換する簡単な方法はないようです。これらの記事は役に立ちました:

カスタム プロキシ サーバーを実装する方法は?

http://www.jeffcrossman.com/2009/08/27/using-httplistener-to-build-a-proxy

私は最終的に非常に似たようなことをしました。

于 2010-05-18T09:19:59.463 に答える
1

のResponseHeadersプロパティを見てみたいと思うかもしれませんWebclient:

WebClient wc = new WebClient();
wc.DownloadStringAsync(new Uri("http://www.foo.com"));

WebHeaderCollection myWebHeaderCollection = myWebClient.ResponseHeaders;

for (int i=0; i < myWebHeaderCollection.Count; i++)             
    Console.WriteLine ("\t" + myWebHeaderCollection.GetKey(i) + 
                       " = " + myWebHeaderCollection.Get(i));

それがあなたが探していたものでない場合は教えてください。

于 2010-05-11T08:04:47.557 に答える