zoukankan      html  css  js  c++  java
  • Android Volley 的基本使用/设置HTTP请求参数、apikey

    最近在做一个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<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便不会执行,希望引以为戒

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

    需要重写getHeaders方法:

    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     }

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

    下面给出一个范例:

     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获取的,使用方法请参考博主的下一篇文章)

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

    效果图:

  • 相关阅读:
    gw经销商上传部分代码
    lib
    【转】sql server的随机函数newID()和RAND()
    【源码】仿qq记住登录信息
    关于ConfigurationManager类
    oracle 10 协议适配器错误解决办法
    配置对象数据源时,无法找到业务对象的解决办法
    private的由来,让能你很容易地区分private与protected的用法!
    大树扎根不稳,缘何不倒?
    Html服务器控件常用属性InnerHtml属性及InnerText属性的区别
  • 原文地址:https://www.cnblogs.com/Linccy/p/5659082.html
Copyright © 2011-2022 走看看