volley post请求 gzip压缩 json 传输
来源:互联网 发布:云计算部署模式哪三种 编辑:程序博客网 时间:2024/05/16 08:01
这里以post请求说明,get请求相似设置请求头及超时。
1.自定义request,继承com.android.volley.Request
2.构造方法实现(basecallback,为自定义的监听,实现Response.Listener,ErrorListener接口)--post请求
String params; public static int SOCKET_TIMEOUT=20000;public MyRequest(String url,String params, Response.Listener<String> listener, Response.ErrorListener errorListener){ super(Method.POST,url,listener,errorListener); this.params=params;}
</pre>
3.请求头设置:重写getHeaders方法
@Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String, String> headers = new HashMap<String, String>(); headers.put("Charset", "UTF-8"); headers.put("Content-Type", "application/x-javascript"); headers.put("Accept-Encoding", "gzip,deflate"); return headers; }
设置字符集为UTF-8,并采用gzip压缩传输
4.超时设置:重写getRetryPolicy方法
@Override public RetryPolicy getRetryPolicy() { RetryPolicy retryPolicy = new DefaultRetryPolicy(SOCKET_TIMEOUT, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); return retryPolicy; }
5.请求参数组装:重写getBody方法
@Override public byte[] getBody() throws AuthFailureError { return params == null ? super.getBody() : params.getBytes(); }
6. 接收到gzip的数据 处理
@Overrideprotected Response<String> parseNetworkResponse(NetworkResponse response) { String parsed =getRealString(response.data); return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response));}<pre name="code" class="java">private int getShort(byte[] data){ return (int) ((data[0] << 8) | data[1] & 0xFF);}public String getRealString(byte[] data){ byte[] h = new byte[2]; h[0] = (data)[0]; h[1] = (data)[1]; int head = getShort(h); boolean t = head == 0x1f8b; InputStream in; StringBuilder sb = new StringBuilder(); try { ByteArrayInputStream bis = new ByteArrayInputStream(data); if (t) { in = new GZIPInputStream(bis); } else { in = bis; } BufferedReader r = new BufferedReader(new InputStreamReader(in), 1000); for (String line = r.readLine(); line != null; line = r.readLine()) { sb.append(line); } in.close(); } catch (Exception e) { e.printStackTrace(); } return sb.toString();}
0 0
- volley post请求 gzip压缩 json 传输
- Volley中json请求POST
- 开启gzip压缩传输
- http post请求接口 传输json
- volley几种简单请求,GET+POST String+JSON
- 使用Volley 网络请求post,json作为参数
- ext_js使用GZIP压缩传输
- volley使用 POST请求
- volley Post网络请求
- Volley请求,GET+POST
- 采用gzip传输时volley的使用
- 关于HttpClient post请求 传输json格式的字节流
- Android Volley框架的几种post提交请求方式(xml->xml json->json xml->json)
- android Volley JSON请求
- volley JSON请求数据
- volley JSON请求数据
- android接口中json数据的传输中使用gzip压缩
- http请求内容gzip压缩
- 【LeetCode】237. Delete Node in a Linked List(链表)
- 6. layout file types
- eclipse安装spring tool suite插件
- 【c/c++】STL标准入门汇总
- hashcode方法浅析
- volley post请求 gzip压缩 json 传输
- 设计模式-工厂方法模式
- Spring事务配置的五种方式
- [Magento代码] 关联SKU到指定的分类下面
- linux环境变量
- 3.HUD 定时任务 常见问题 模型 一个控件看不到有哪些可能
- ListView与GridView的属性讲解
- js this指针绑定问题 及闭包小析
- js 选项卡