Ich muss eine Schnittstelle zu einem leicht veralteten System herstellen, das keine Webservices verwendet. Um Daten an dieses System zu senden, muss ich ein XML-Dokument in eine Formular auf der Website des anderen Systems. Dieses XML-Dokument kann sehr groß werden, so dass ich es gerne komprimieren würde. Das andere System läuft auf IIS, und ich verwende C# auf meiner Seite. Ich könnte natürlich etwas implementieren, das die Daten vor der Veröffentlichung komprimiert, aber dazu müsste das andere System geändert werden, damit es die Daten dekomprimieren kann. Ich möchte es vermeiden, das andere System zu ändern, da es nicht in meinem Besitz ist.
Ich habe gehört, vage Dinge über die Aktivierung der Kompression / http 1.1 in IIS und den Browser, aber ich habe keine Ahnung, wie man das zu meinem Programm zu übersetzen. Grundsätzlich gibt es irgendeine Eigenschaft, die ich in meinem Programm einstellen kann, die mein Programm automatisch die Daten komprimieren lässt, die es an IIS sendet und für IIS, um es nahtlos zu dekomprimieren, so dass die empfangende App nicht einmal den Unterschied kennt?
Hier ist ein Beispielcode, um grob zu zeigen, was ich tue;
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" wird in Wirklichkeit zu "data=[ein mehrere MB großes XML-Dokument]".
Ich bin mir bewusst, dass diese Frage letztendlich unter das Banner der Nicht-Programmierung fallen könnte, wenn dies mit nicht-programmatischen Mitteln erreicht werden kann, daher entschuldige ich mich im Voraus.