尝试在 Android 项目上实施 gzip 以减少客户端数据费用。所有设备都连接到 WCF Web 服务,IIS 现在按预期将压缩数据发送回设备。现在我需要弄清楚如何回发在 android 设备上修改的 gzipped xml 数据。设备代码如下
httpsURLConnection.setDoInput(true);
httpsURLConnection.setDoOutput(true);
httpsURLConnection.setConnectTimeout(TIMEOUT);
httpsURLConnection.setReadTimeout(TIMEOUT);
httpsURLConnection.setRequestMethod("POST");
httpsURLConnection.setRequestProperty("Content-Type", "application/xml");
httpsURLConnection.setRequestProperty("Content-Encoding", "gzip);
httpsURLConnection.connect();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new BufferedOutputStream((httpsURLConnection.getOutputStream())));
gzipOutputStream.write(_xmlText.getBytes());
gzipOutputStream.flush();
gzipOutputStream.finish();
gzipOutputStream.close();
在网络服务器上运行 Wireshark 会显示 gzip 数据包并解压缩它们以显示来自设备的正确数据。问题是 WCF Web 服务似乎无法识别数据 - 错误是 XmlException - 根级别的数据无效。第 1 行,位置 1。这让我觉得数据仍然是压缩的,WCF 无法处理 gzip——我似乎记得以前读过。然后我是否需要在 .net 中创建一个消息解码器来处理 gzip 压缩?这是否有望在 .net 4.5 中解决?
对这些问题的任何帮助表示赞赏。