zoukankan      html  css  js  c++  java
  • 如何使用Retrofit获取服务器返回来的JSON字符串

    有关Retrofit的简单集成攻略,大家可以参考我此前的一篇文章
    有关更多API文档的查阅请大家到Retrofit官网查看。

    在大家使用网络请求的时候,往往会出现一种情况:需要在拿到服务器返回来的JSON字符串,而Retrofit会默认将Json解析,而又没有直接暴露出拿到Json字符串的方法,经过在网上一定的查阅,再次给大家一个简单的办法,就能够拿到Json字符串。

    以下是我们在Api接口中的定义方法

    1
    2
    3
    4
    5
    6
    7
    //以前我们使用我们定义好的POJO或javabean类作为callback的泛型,以便Retrofit帮我们解析
    @POST("/interface/xxxxxx")
    void getCouponList(Callback<Coupon> reponse);

    //但如果我们想获得JSON字符串,Callback的泛型里就不能写POJO类了,要写Response(retrofit.client包下)
    @POST("/interface/xxxxxx")
    void getCouponList(Callback<Response> reponse);

    那么在我们请求接口的时候,只需简单一行代码,就能拿到服务器返回的JSON字符串了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    ZhixueApiUtil.getInstance().getZhixueApi().getCouponList(new Callback<Response>() {
    @Override
    public void success(Response response, Response response1) {
    //注意这里用第一个Response参数的
    String jsonString = new String(((TypedByteArray) response.getBody()).getBytes());

    //再使用Retrofit自带的JSON解析(或者别的什么)
    Coupon coupon = new Gson().fromJson(jsonString, Coupon.class);
    ......
    }

    @Override
    public void failure(RetrofitError error) {
    ......
    }
    });

    至此,我们就能拿到JSON字符串了,在需要的时候可以用这种办法。
    当然,也希望Retrofit以后能够加入相应的API。

  • 相关阅读:
    nginx反向代理架构与安装配置(一)
    nginx反向代理部署与演示(二)
    php的opcode缓存原理
    php加速缓存器opcache,apc,xcache,eAccelerator
    php的高性能日志系统 seaslog 的安装与使用
    centos7下源码安装mysql5.7.16
    php 使用html5 XHR2 上传文件 进度显示
    php下ajax的文件切割上传
    php 输出缓冲 Output Control
    php单点登陆简单实现 (iframe方式)
  • 原文地址:https://www.cnblogs.com/pangguoming/p/5148049.html
Copyright © 2011-2022 走看看