Saya memiliki komunikasi HTTP ke server web yang meminta data JSON. Saya ingin mengompres aliran data ini dengan Content-Encoding: gzip
. Apakah ada cara yang dapat saya atur Accept-Encoding: gzip
di HttpClient saya? Pencarian gzip
di Referensi Android tidak menunjukkan apapun yang berhubungan dengan HTTP, seperti yang Anda lihat di sini .
109
new WebRequest().get().to("http://www.example.com/").askForGzip(true).executeSync()
. Secara khusus, metode parseResponse (...) harus sesuai dengan yang Anda cari.Jawaban:
Anda harus menggunakan header http untuk menunjukkan bahwa koneksi dapat menerima data yang dikodekan gzip, misalnya:
Periksa tanggapan untuk pengkodean konten:
sumber
gzip
agar benar - benar memungkinkan kompresi gzip. (2) perlu diingat bahwa server mungkin tidak meng-gzip respons jika terlalu kecil ...Jika Anda menggunakan API level 8 atau lebih, ada AndroidHttpClient .
Ini memiliki metode pembantu seperti:
dan
mengarah ke kode yang jauh lebih ringkas:
sumber
Saya pikir contoh kode di tautan ini lebih menarik: ClientGZipContentCompression.java
Mereka menggunakan HttpRequestInterceptor dan HttpResponseInterceptor
Sampel untuk permintaan:
Contoh jawaban:
sumber
Saya belum pernah menggunakan GZip, tetapi saya akan berasumsi bahwa Anda harus menggunakan aliran input dari Anda
HttpURLConnection
atauHttpResponse
sebagaiGZIPInputStream
, dan bukan beberapa kelas tertentu lainnya.sumber
Dalam kasus saya, itu seperti ini:
sumber