Android Volley 的基本使用/设置HTTP请求参数、apikey

最近在作一个Android的新闻客户端,感受收获颇丰。javascript

这里分享一下Volley获取网络数据的方法java

Volley是Google I/O 2013推出的网络通讯库,它的拓展性很强,使用它能使代码变得更健壮,Volley在提供了高性能网络通信功能的同时,对网络图片加载也提供了良好的支持api

下面主要介绍一下Volley的StringRequest的使用方法网络

简单的写法是这样的:app

 1 /**
 2      * 获取网络数据 新闻卡片
 3      */
 4     private void getNewsData(String NewsType) {
 5         String URL = NewsType;//国内新闻列表
 6         StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
 7             Gson gson = new Gson();
 8 
 9             @Override
10             public void onResponse(String response) {
11                 //获得网络发送过来的字符串要作的操做,通常是转换为Json等操做
12             }
13         }, new Response.ErrorListener() {
14 
15             @Override
16             public void onErrorResponse(VolleyError error) {
17 //请求失败时要作的操做
18             }
19         }) {
20             
21         mQueue.add(stringRequest);//加入到请求队列,否则是不会发送请求的
22         mQueue.start();
23     }

以前就犯了没有写add()的错误,中间的onresponse便不会执行,但愿引觉得戒ide

下面来介绍一下在Volley怎样添加请求参数,如apikey httpArg等性能

须要重写getHeaders方法:spa

1  @Override
2     public Map<String, String> getHeaders() throws AuthFailureError
3     {
4     Map<String, String> headers = new HashMap<String, String>();
5     headers.put("Charset", "UTF-8");
6     headers.put("Content-Type", "application/x-javascript");
7     headers.put("Accept-Encoding", "gzip,deflate");
8     return headers;
9     }

能够在这里面添加你想要的任何参数线程

下面给出一个范例:code

 1 /**
 2      * 获取网络数据 新闻卡片
 3      */
 4     private void getNewsData(String NewsType) {
 5         String URL = NewsType;//国内新闻列表
 6         StringRequest stringRequest = new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
 7             Gson gson = new Gson();
 8 
 9             @Override
10             public void onResponse(String response) {
11                 NewsListResponseJson newsListJsonObject = gson.fromJson(response, NewsListResponseJson.class);
12                 newsItems = newsListJsonObject.getData();
13             }
14         }, new Response.ErrorListener() {
15 
16             @Override
17             public void onErrorResponse(VolleyError error) {
18 
19             }
20         }) {
21             @Override
22             public Map<String, String> getHeaders() throws AuthFailureError {
23                 Map<String, String> headers = new HashMap<>();
24                 headers.put("apikey", Constant.APIKET);
25                 return headers;
26             }
27         };
28         mQueue.add(stringRequest);
29         mQueue.start();
30     }

注:(下图的图片是经过picasso获取的,使用方法请参考博主的下一篇文章)

就这么简单,并不要像通常状况下本身写线程、和各类重复劳动

效果图:

相关文章
相关标签/搜索