55
55
import java .util .List ;
56
56
import java .util .Map ;
57
57
import java .util .TimeZone ;
58
+ import java .util .zip .GZIPInputStream ;
58
59
import java .util .zip .GZIPOutputStream ;
59
60
60
61
final class CctTransportBackend implements TransportBackend {
@@ -63,6 +64,7 @@ final class CctTransportBackend implements TransportBackend {
63
64
64
65
private static final int CONNECTION_TIME_OUT = 30000 ;
65
66
private static final int READ_TIME_OUT = 40000 ;
67
+ private static final String ACCEPT_ENCODING_HEADER_KEY = "Accept-Encoding" ;
66
68
private static final String CONTENT_ENCODING_HEADER_KEY = "Content-Encoding" ;
67
69
private static final String GZIP_CONTENT_ENCODING = "gzip" ;
68
70
private static final String CONTENT_TYPE_HEADER_KEY = "Content-Type" ;
@@ -226,6 +228,7 @@ private HttpResponse doSend(HttpRequest request) throws IOException {
226
228
"User-Agent" , String .format ("datatransport/%s android/" , BuildConfig .VERSION_NAME ));
227
229
connection .setRequestProperty (CONTENT_ENCODING_HEADER_KEY , GZIP_CONTENT_ENCODING );
228
230
connection .setRequestProperty (CONTENT_TYPE_HEADER_KEY , PROTOBUF_CONTENT_TYPE );
231
+ connection .setRequestProperty (ACCEPT_ENCODING_HEADER_KEY , GZIP_CONTENT_ENCODING );
229
232
230
233
if (request .apiKey != null ) {
231
234
connection .setRequestProperty (API_KEY_HEADER_KEY , request .apiKey );
@@ -244,7 +247,8 @@ private HttpResponse doSend(HttpRequest request) throws IOException {
244
247
channel .write (ByteBuffer .wrap (output .toByteArray ()));
245
248
int responseCode = connection .getResponseCode ();
246
249
Logging .i (LOG_TAG , "Status Code: " + responseCode );
247
- Logging .i (LOG_TAG , "Content-Type:" + connection .getHeaderField ("Content-Type" ));
250
+ Logging .i (LOG_TAG , "Content-Type: " + connection .getHeaderField ("Content-Type" ));
251
+ Logging .i (LOG_TAG , "Content-Encoding: " + connection .getHeaderField ("Content-Encoding" ));
248
252
249
253
if (responseCode == 302 || responseCode == 301 ) {
250
254
String redirect = connection .getHeaderField ("Location" );
@@ -254,7 +258,13 @@ private HttpResponse doSend(HttpRequest request) throws IOException {
254
258
return new HttpResponse (responseCode , null , 0 );
255
259
}
256
260
257
- InputStream inputStream = connection .getInputStream ();
261
+ InputStream inputStream ;
262
+ String contentEncoding = connection .getHeaderField (CONTENT_ENCODING_HEADER_KEY );
263
+ if (contentEncoding != null && contentEncoding .equals (GZIP_CONTENT_ENCODING )) {
264
+ inputStream = new GZIPInputStream (connection .getInputStream ());
265
+ } else {
266
+ inputStream = connection .getInputStream ();
267
+ }
258
268
try {
259
269
long nextRequestMillis = LogResponse .parseFrom (inputStream ).getNextRequestWaitMillis ();
260
270
return new HttpResponse (responseCode , null , nextRequestMillis );
0 commit comments