6

尝试在 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 中解决?

对这些问题的任何帮助表示赞赏。

4

0 回答 0