Невозможно получить gziped InputSTream на устройстве Android, используя DefaultHttpClient, HttpPost JSON
У меня есть служба JSON, доступная на сайтах http и https (тот же сервер IIS). Используя этот код, при вызове http url я получаю gziped ответ, но вызов https не gziped. HTTPS ретранслирует сжатый контент и правильные заголовки (в данном случае требуемый заголовок - Content-Encoding) в других приложениях, использующих тот же сайт.
private InputStream execute(String url, int method, JSONObject jsonObject) throws ClientProtocolException, IOException {
DefaultHttpClient httpsclient = new DefaultHttpClient();
InputStream inStream = null;
// Checking http request method type
if (method == POST) {
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Accept-Encoding", "gzip");
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json; charset=utf-8");
// adding post params
if (jsonObject != null) {
StringEntity entity = new StringEntity(jsonObject.toString(), HTTP.UTF_8);
httpPost.setEntity(entity);
}
HttpResponse httpRes = httpsclient.execute(httpPost);
inStream = httpRes.getEntity().getContent();
Header contentEncoding = httpRes.getFirstHeader("Content-Encoding");
if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) {
return new GZIPInputStream(inStream);
} else {
return inStream;
}
} else if (method == GET) {
throw new UnsupportedOperationException("GET not implemented yet.");
} else {
throw new UnsupportedOperationException();
}
}
У кого-нибудь есть идея, что является проблемой здесь, или я должен использовать другой подход? заголовок contentEncoding является нулевым