Android Retrofit用法详解

原文出处于此,我想再也找不到如此详细的用法详解了,涵盖使用代码示例使用示例的视频课件

我这里仅仅只把课件展示出来,如果有需要看代码或者视频学习的小伙伴,可以自行点击。

原文作者在使用retrofit编写基本的client端代码之前,先使用LoopBack搭建一个用于测试的api server,这一步不太清楚的同学可以去LooBack官网查阅一下,视频里也是粗略的有提到而已。

那么以下就是原作的课件了,当然,有部分是我在过程中补充的一些我的笔记,看看就好:

利用LoopBack搭建好一个api server之后,我们会在浏览器中看到一个如下图所示的界面:

(由于原作的课件之中,这张截图始终无法显示,所以我猜测原作应该是想要把这张图放出来,给大家展示一下LoopBack搭建好一个api server是什么样子的,所以我去视频里把这张图截下来了,希望没有截错 ...)

在图中可以看到很多形式的api接口, 如POST GET PUT DELETE HEAD, 我们可以利用这些api测试我们android的代码。

现在,我们实现一个基本的rest api访问功能。

第零步,编写正式的代码前, 我们需要做一些准备工作。 首先,我们需要在项目中引入retrofit类库, 因为我是用android studio来开发,所以需要在主module的build.gradle文件中加入retrofit的依赖, 在dependencies节点中加入如下代码:

 compile 'com.squareup.retrofit:retrofit:1.9.0'

同步一下gradle,会发现在项目的External Libraries中已经存在retrofit的类库了。

我们还需要做的另外一个配置是在清单文件中加入网络访问的权限。

第一步, 我们需要实现一个和server端CoffeeShops Model相对应的java实体类, 我们取名为CoffeeShop, (理论上如果害怕麻烦的话,可以直接将java实体类与server端一一对应,但也可仅仅取出所需字段),代码如下:

public class CoffeeShop extends BaseHttpModel {
    public int id;
    public String name;
    public String brand;
    public String made_in;
}

我这里补充一个截图,server端CoffeeShops Model有如下字段:

BaseHttpModel类代码:

public class BaseHttpModel {
    //方便打印返回数据
    @Override
    public String toString() {
        return new Gson().toJson(this);
    }
}

第二步,我们需要写一个接口,这个接口里的方法和服务器端的api一一对应:

public interface LoopBackService {
    @POST("/CoffeeShops")
    void postCoffeeShop(@Body CoffeeShop coffeeShop, Callback<CoffeeShop> cb);


    @GET("/CoffeeShops")
    void getCoffeeShop(Callback<List<CoffeeShop>> cb);

    @PUT("/CoffeeShops")
    void putCoffeeShop(@Body CoffeeShop coffeeShop, Callback<CoffeeShop> cb);

    @DELETE("/CoffeeShops/{id}")
    void deleteCoffeeShop(@Path("id") int id, Callback<Object> cb);
}

第三步, 我们需要实现一个Client类, 这个类可以返回一个第二步接口的一个实例

public class RestClient {
    private static LoopBackService service;

    private RestClient() {};

    public static LoopBackService getService() {
        if (null == service) {
            service = new RestAdapter.Builder()
                    .setEndpoint(Config.API_HOST)
                    .setLogLevel(RestAdapter.LogLevel.FULL)
                    .build()
                    .create(LoopBackService.class);
        }
        return service;
    }
}

观察上面的代码,我们使用单例来保证程序中只存在一个service的实例, 这里并没有考虑线程安全,因为我觉得这里并不需要考虑子线程调用的问题。

好,到这里,一个基本的api访问的代码已经编写完毕, 剩下的工作就是使用我们上面三步的代码来访问api数据。

我们在LoopBackService接口里写了4个方法, 我们在界面上相对应的放置4个按钮,来分别实现访问这4个api的动作。

完整的代码示例,可自行下载查看。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Retrofit是一个用于在Android应用中进行网络请求的库。它通过简化网络请求的过程,提供了一种方便的方式来与后台服务器进行通信。 在Retrofit中,首先需要创建一个RetrofitService类。这个类负责配置Retrofit的基础URL和创建Retrofit实例。可以通过调用RetrofitService的create方法来创建具体的服务接口实例。这个服务接口定义了与后台服务器进行通信的方法。 在使用Retrofit时,可以通过Converter来将服务器返回的数据转换成Java对象。Retrofit支持多种转换器,可以根据数据的格式选择合适的转换器。 通过调用Retrofit的execute方法或enqueue方法可以发送网络请求。execute方法将请求发送到后台并即时返回结果,而enqueue方法将请求放入请求队列中,并在请求完成后通过Callback回调返回结果。 综上所述,Android中使用Retrofit进行网络请求的步骤包括:配置Retrofit的基础URL、创建服务接口实例、定义请求方法、选择合适的转换器、发送网络请求并处理响应。 引用: : 这段代码展示了如何在Android中使用Retrofit进行网络请求。 : 这段代码展示了创建Retrofit实例和服务接口实例的方式。 : 这段代码展示了最初使用Retrofit的方式,其中包括设置基础URL和创建Retrofit实例的步骤。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [android retrofit 从无知到入门](https://blog.csdn.net/shop_and_sleep/article/details/123526236)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值