Volley 请求/接收内容 GZIP压缩
往后端传输json字符串为例,其余类型同样做法
自己设置Request继承Volley自带的StringRequest
GzipRequest.java
public class GzipRequest extends StringRequest { private String mData = null; public GzipRequest(String url, Response.Listener<String> listener, @Nullable Response.ErrorListener errorListener) { super(url, listener, errorListener); } public GzipRequest(String url,String data, Response.Listener<String> listener, @Nullable Response.ErrorListener errorListener) { super(Method.POST,url, listener, errorListener); mData = data; } @Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String,String> headers = new HashMap<String, String>(); headers.put("Charset", "UTF-8"); headers.put("Accept-Encoding", "gzip,deflate");//用户端允许接收GZIP headers.put("Content-Encoding", "gzip");//用户端发送GZIP内容 headers.put("Content-Type", "application/json");//根据后端要求,觉得Content-Type类型 return headers; } @Override public RetryPolicy getRetryPolicy() { return new DefaultRetryPolicy(); //setRetryPolicy(RetryPolicy policy);可自己设置超时时间,重试次数等参数 } @Override public byte[] getBody() throws AuthFailureError { return mData == null ? super.getBody() : compress(mData); } @Override protected Response<String> parseNetworkResponse(NetworkResponse response) { String result = uncompress(response.data); return Response.success(result, HttpHeaderParser.parseCacheHeaders(response)); //return super.parseNetworkResponse(response); } @Override protected void deliverResponse(String response) { } private byte[] compress(String str) { try (ByteArrayOutputStream outStream = new ByteArrayOutputStream()) { try (GZIPOutputStream gzip = new GZIPOutputStream(outStream)) { gzip.write(str.getBytes(StandardCharsets.UTF_8)); } return out.toByteArray(); }catch (Exception E){ return new byte[0]; } } private String uncompress(byte[] str){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(str))) { int b; while ((b = gis.read()) != -1) { baos.write((byte) b); } }catch (Exception e){ return ""; } return new String(baos.toByteArray(), StandardCharsets.UTF_8); }}
以上,有帮助到你的话随手点个赞^^
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Volley 请求/接收内容 GZIP压缩
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Volley 请求/接收内容 GZIP压缩