【第七篇】Volley之处理Gzip数据

时间:2023-03-08 21:54:02

一般对于API请求需带上GZip压缩,因为API返回数据大都是Json串之类字符串,GZip压缩后内容大小大幅降低.

public class GZipRequest extends StringRequest {
public GZipRequest(int paramInt, String paramString,
Response.Listener<String> paramListener,
Response.ErrorListener paramErrorListener) {
super(paramInt, paramString, paramListener, paramErrorListener);
} public GZipRequest(String paramString,
Response.Listener<String> paramListener,
Response.ErrorListener paramErrorListener) {
super(paramString, paramListener, paramErrorListener);
} protected Response<String> parseNetworkResponse(
NetworkResponse paramNetworkResponse) {
String str1 = ""; try {
GZIPInputStream gzipInputStream = new GZIPInputStream(
new ByteArrayInputStream(paramNetworkResponse.data));
InputStreamReader inputStreamReader = new InputStreamReader(
gzipInputStream);
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
while (true) {
String str2 = bufferedReader.readLine();
if (str2 == null)
break;
str1 = str1 + str2;
}
inputStreamReader.close();
bufferedReader.close();
gzipInputStream.close();
return Response.success(str1,
HttpHeaderParser.parseCacheHeaders(paramNetworkResponse),
false);
} catch (IOException e) {
return Response.error(new ParseError(e));
}
}
}