我必须与一个不使用webservices的稍微过时的系统接口。为了将数据发送到该系统,我需要将XML文档发布到另一个系统的网站上的表单中。这个XML文档可能变得非常大,所以我想压缩它。 另一个系统位于IIS上,我使用C#my end。我当然可以在发布之前实现压缩数据的东西,但这需要更改其他系统以便解压缩数据。我想避免更改其他系统,因为我不拥有它。
我听说过在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 :(得分:2)
在没有主动解压缩数据的情况下,我认为无法在一侧压缩数据并在另一端接收未压缩的数据。
答案 1 :(得分:0)
不知道这是否可行,因为我找到的所有示例都是为了下载,但您可以尝试使用gzip压缩数据,然后将传出消息上的Content-Encoding标头设置为gzip
。我认为长度应该是压缩邮件的长度,尽管如果不起作用,你可能希望将其作为未编码邮件的长度。
编辑我认为问题在于是否在上传时始终/始终/可配置地调用支持压缩的ISAPI过滤器。我找不到答案,所以我怀疑答案永远不会,但是在你尝试之前你会不知道(或者找不到我的答案)。