2008-12-09 29 views
2

我必須與一個稍微陳舊的系統接口,不使用webservices。爲了將數據發送到此係統,我需要在另一個系統的網站上發佈XML文檔到表單。這個XML文檔可能會變得非常大,所以我想壓縮它。 其他系統坐在IIS上,我使用C#我的結束。我當然可以實現在發佈數據之前壓縮數據的東西,但這需要其他系統進行更改,以便可以對數據進行解壓縮。我想避免改變其他系統,因爲我不擁有它。如何無縫壓縮使用C#和IIS發佈到表單的數據?

我聽說在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 MB文檔]」。

我知道這個問題可能最終會落在非編程橫幅下,如果這是可以通過非編程方式實現的,請提前道歉。

回答

0

不知道這是否會因爲所有的例子我能找到的是用於工作下載,但您可以嘗試使用gzip壓縮數據,然後將傳出消息上的Content-Encoding標頭設置爲gzip。我認爲長度應該是壓縮消息的長度,儘管如果這樣不起作用的話,你可能想把它變成未編碼消息的長度。

好運。

編輯我認爲這個問題是支持壓縮的ISAPI篩選器是否是有史以來/總是/上載可配置調用。我無法找到答案,所以我懷疑答案是從來沒有,但直到你嘗試(或找到答案,避免了我),你纔會知道。

2

我看不出有什麼辦法來壓縮在一個方和接收未壓縮他們對對方沒有主動解壓數據中的數據..

相關問題