博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Volley 的基本使用/设置HTTP请求参数、apikey
阅读量:5172 次
发布时间:2019-06-13

本文共 2618 字,大约阅读时间需要 8 分钟。

最近在做一个Android的新闻客户端,感觉收获颇丰。

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

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

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

简单的写法是这样的:

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
() { 7 Gson gson = new Gson(); 8 9 @Override10 public void onResponse(String response) {11 //得到网络发送过来的字符串要做的操作,一般是转换为Json等操作12 }13 }, new Response.ErrorListener() {14 15 @Override16 public void onErrorResponse(VolleyError error) {17 //请求失败时要做的操作18 }19 }) {20 21 mQueue.add(stringRequest);//加入到请求队列,不然是不会发送请求的22 mQueue.start();23 }

之前就犯了没有写add()的错误,中间的onresponse便不会执行,希望引以为戒

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

需要重写getHeaders方法:

1  @Override2     public Map
getHeaders() throws AuthFailureError3 {4 Map
headers = new HashMap
();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 }

可以在这里面添加你想要的任何参数

下面给出一个范例:

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
() { 7 Gson gson = new Gson(); 8 9 @Override10 public void onResponse(String response) {11 NewsListResponseJson newsListJsonObject = gson.fromJson(response, NewsListResponseJson.class);12 newsItems = newsListJsonObject.getData();13 }14 }, new Response.ErrorListener() {15 16 @Override17 public void onErrorResponse(VolleyError error) {18 19 }20 }) {21 @Override22 public Map
getHeaders() throws AuthFailureError {23 Map
headers = new HashMap<>();24 headers.put("apikey", Constant.APIKET);25 return headers;26 }27 };28 mQueue.add(stringRequest);29 mQueue.start();30 }

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

就这么简单,并不要像一般情况下自己写线程、和各种重复劳动

效果图:

 

转载于:https://www.cnblogs.com/Linccy/p/5659082.html

你可能感兴趣的文章
idea 配置mybatis Generator 不显示的解决方案 和 配置MBG
查看>>
英语生疏了,每日至少一句吧
查看>>
创建打不开文件夹
查看>>
12 for循环
查看>>
redis(hash篇)
查看>>
Scala实战高手****第12课:Scala函数式编程进阶(匿名函数、高阶函数、函数类型推断、Currying)与Spark源码鉴赏...
查看>>
Hibernate一对多关联
查看>>
python 把函数作为参数 ---高阶函数
查看>>
jQuery + ashx 实现图片按比例预览、异步上传及显示
查看>>
android 代码中使用textAppearance
查看>>
【iOS】UITableViewDelegate 方法没有调用
查看>>
解决code::blocks 17.12不能debug的方法
查看>>
bzoj2961&&bzoj4140 共点圆
查看>>
96:经典实例,判断那一条是闰年:
查看>>
upsource初探
查看>>
让SVN自动更新代码注释中的版本号
查看>>
java中base64
查看>>
常用的mysql操作命令
查看>>
Unity3D的菜单及编辑器扩展
查看>>
我是如何拿到蚂蚁金服 offer 的 ?
查看>>