クライアントのデータ料金を削減するために、Android プロジェクトに gzip を実装しようとしています。すべてのデバイスが WCF Web サービスに接続され、IIS は圧縮されたデータを期待どおりにデバイスに送り返すようになりました。ここで、Android デバイスで変更された gzip 圧縮された 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();
Web サーバーで Wireshark を実行すると、gzip パケットが表示され、圧縮解除されて、デバイスからの正しいデータが表示されます。問題は、WCF Web サービスがデータを認識していないように見えることです - エラーは XmlException です - ルート レベルのデータが無効です。行 1、位置 1。これにより、データがまだ圧縮されており、WCF が gzip を処理できないと思われます。以前に読んだことを覚えているようです。gzip 圧縮を処理するために、.net でメッセージ デコーダを作成する必要がありますか? これは .net 4.5 でうまく対処されましたか?
これらの質問の助けをいただければ幸いです。