Мне приходится взаимодействовать со слегка архаичной системой, которая не использует веб-сервисы. Чтобы отправить данные в эту систему, мне нужно опубликовать XML-документ в форме на веб-сайте другой системы. Этот документ XML может стать очень большим, поэтому я хотел бы сжать его.
Другая система находится на IIS, и я использую C # мой конец. Конечно, я мог бы реализовать что-то, что сжимает данные перед публикацией, но для этого требуется изменить другую систему, чтобы она могла распаковать данные. Я хотел бы избежать изменения другой системы, поскольку я не являюсь ее владельцем.
Я слышал неясные вещи о включении сжатия / http 1.1 в IIS и браузере, но я не знаю, как перевести это в мою программу. По сути, есть ли какое-либо свойство, которое я могу установить в своей программе, которое заставит мою программу автоматически сжимать данные, которые она отправляет в 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 = [документ XML объемом несколько МБ]».
Мне известно, что этот вопрос может в конечном итоге попасть под непрограммный баннер, если это достижимо непрограммными средствами, поэтому заранее приносим свои извинения.