2

Web サービスを使用しない少し古風なシステムとやり取りする必要があります。このシステムにデータを送信するには、XML ドキュメントを別のシステムの Web サイトのフォームに投稿する必要があります。この XML ドキュメントは非常に大きくなる可能性があるため、圧縮したいと考えています。もう 1 つのシステムは IIS 上にあり、私は最後に C# を使用しています。もちろん、投稿する前にデータを圧縮するものを実装することもできますが、それには、データを解凍できるように他のシステムを変更する必要があります。私はそれを所有していないので、他のシステムを変更することは避けたいと思います。

IIS とブラウザで圧縮 / http 1.1 を有効にすることについて漠然としたことを聞いたことがありますが、それを自分のプログラムに変換する方法がわかりません。基本的に、IIS に送信するデータをプログラムで自動的に圧縮し、IIS がシームレスに圧縮解除できるように、プログラムで設定できるプロパティがあるので、受信アプリは違いさえわかりませんか?

これは、私が何をしているかを大まかに示すサンプルコードです。

private static void demo()
    {

        Stream myRequestStream = null;
        Stream myResponseStream = null;

        HttpWebRequest myWebRequest = (HttpWebRequest)System.Net
                              .WebRequest.Create("http://example.com");
        byte[] bytMessage = null;
        bytMessage = Encoding.ASCII.GetBytes("data=xyz");
        myWebRequest.ContentLength = bytMessage.Length;
        myWebRequest.Method = "POST";

        // Set the content type as form so that the data
        // will be posted as form              
        myWebRequest.ContentType = "application/x-www-form-urlencoded";

        //Get Stream object 
        myRequestStream = myWebRequest.GetRequestStream();

        //Writes a sequence of bytes to the current stream    
        myRequestStream.Write(bytMessage, 0, bytMessage.Length);

        //Close stream
        myRequestStream.Close();

        WebResponse myWebResponse = myWebRequest.GetResponse();
        myResponseStream = myWebResponse.GetResponseStream();
}

「data=xyz」は、実際には「data=[数MBのXML文書]」になります。

この質問は、プログラム以外の手段で達成できる場合、最終的には非プログラミングのバナーに該当する可能性があることを認識しているため、事前にお詫び申し上げます。

4

2 に答える 2

2

データを積極的に解凍せずに、一方の側でデータを圧縮し、もう一方の側で圧縮されていないデータを受信する方法がわかりません..

于 2008-12-09T13:07:15.963 に答える
0

私が見つけたすべての例はダウンロード用だったので、これが機能するかどうかはわかりませんが、gzip を使用してデータを圧縮し、送信メッセージの Content-Encoding ヘッダーをgzip. 長さは圧縮されたメッセージの長さであるべきだと思いますが、それがうまくいかない場合は、エンコードされていないメッセージの長さにしてみてください。

幸運を。

EDIT 問題は、圧縮をサポートするISAPIフィルターがアップロード時に常に/常に/構成可能に呼び出されるかどうかだと思います。私はそれに対する答えを見つけることができなかったので、答えは決してないと思いますが、試してみるまで(または私を逃した答えを見つけるまで)わかりません。

于 2008-12-09T13:13:17.187 に答える