2011-02-01 8 views
1

私の.net 3.0アプリケーションでWebサービス参照を使用していますが、gzipデコードを設定しようとしています。httpWebRequest.AutomaticDecompressionは「Accept_Encoding:gzip」ヘッダーを設定しません

私がSoapUIを使用すると、リクエストに「Accept-Encoding:gzip、deflate」というヘッダーが設定されているため、応答はgzipで圧縮されます。私の.net要求が送られるとき、サーバがレスポンスを圧縮しないように、このヘッダーはありません。

これは私がやりたいことを正確に記述するlinkです。私はコードを実装し、すべての要求に対して実行されていることをデバッガで確認しましたが、まだ「Accept-Encoding:gzip」ヘッダーを追加していません。

次は、リンクのクラスに手動でヘッダを追加しました。

httpWebRequest.Headers.Add("Accept-Encoding", "gzip"); 

最後に、私はサーバーから圧縮された応答を受け取りました!しかし、いいえ、今私はリンクからクラスを使用して次のように設定されているにもかかわらず、応答が解凍されていないため、確かに不正なXML例外が発生します。

httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip;; 

何が問題なのか分かりません。

+1

'.AutomaticDecompression = DecompressionMethods.GZip;'自分自身がAutomaticDecompressionに干渉する可能性のある、「Accept-Encoding」ヘッダーを追加します。 '(HttpWebRequest)WebRequest.Create()'も使用してください。あなたがリンクしているページで使われているその醜い反射のisteadです。 – nos

+0

私はWeb参照を使用しているので、私は参照されたAPIでメソッドを呼び出すだけで、明示的にWeb要求を作成していません。これらの作品は.netによって何とか処理されるので、私はこの反射コードを使用しました。 "Accept-Encoding"のヘッダーを追加しないと、.AutomaticDecompression = DecompressionMethods.GZipを設定してもそのヘッダーは要求に含まれません。私はWebリファレンスを使用しているので、この問題がありますか? – Tbonebrad

答えて

2

私は私の問題を解決しました。

ウェブ参照を使用しているので、ウェブ参照オブジェクトにEnableDecompression = trueを設定する必要があります。

だから、解決策はReferredServiceは、Web参照名で、この

var client = new ReferredService 
       { 
        EnableDecompression = true 
       } 

のようなものです。

関連する問題