使用POST参数压缩HTTP文本

3
我正在编写客户端软件,该软件使用大量文本(实际上是JSON对象)作为POST参数发起HTTP请求。我希望在发送之前压缩此文本,并在服务器上解压缩文本。
Gzip生成二进制数据,我认为无法将其作为POST参数发送。
有哪些选项/算法可用于压缩文本并将其发送到Web服务器?
编辑:是否可以对二进制数据进行GZIP压缩,然后进行BASE64编码?

客户端应用程序使用哪种编程语言编写? - John Parker
你是在使用 WebRequest 类还是其他的类? - John Parker
请查看http://netomatix.com/HttpPostData.aspx - 在传输数据之前,您只需要压缩数据以确定长度并进行传输。 - John Parker
2
大多数Web服务器仅支持提供压缩响应。我从未听说过服务器接受压缩请求,也不知道如何实际通知服务器。 - leppie
2个回答

1

为什么不直接使用标准的HTTP gzip压缩呢?

(这似乎有点疯狂,没有必要重新发明轮子。)

更新

啊,是的-我的错。那么为什么不简单地对文件进行gzip压缩,像上传multipart/form-data文件一样将其上传到服务器,然后在服务器上解压缩呢?


由于某种原因,我认为这会导致很多开销,因为一个文件被写入到Web服务器的文件系统中,不过这只是一种猜测。 - koen
在某个时候,文件必须最终上传到服务器,并且在当今这个时代,解压数据只是一个微不足道的额外负担。 - John Parker
3
@koen,@Julian Reschke:我不知道有哪个服务器支持这个。如果你有一个强大的客户端,那么你可以手动压缩并在服务器端处理程序上执行相同的操作。 - leppie
@leppie:我记得几年前在Tomcat和SAP J2EE中使用过content-encoding: gzip来进行PUT和PROPPATCH,可能在httpd和IIS中也是如此。 - Julian Reschke
@Julian Reschke:在IIS中绝对不支持。那么服务器如何广告“accept-encoding”? - leppie
显示剩余3条评论

0

这个文件是一个冗长/不必要的解决方案,原始问题涉及到与难以承受的大型Json blob的斗争。从我的hack中可以看出,它高度依赖于服务器,有些支持,有些不支持。

对于原始问题,您可以在http post中设置二进制数据,真正的问题是服务器会如何处理它。这与C#客户端不会自动解压缩的方式相同,您需要编写额外的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接