Retrofit 2.0 基本使用

Retrofit2.0 从基础到实战(一)Retrofit的使用方法 前言 正文 使用方法 介绍 API说明 1请求方法 2 URL操作 3请求主体 4 form encode 和 multipart 5头部操作 6同步 VS 异步 Retrofit配置 1转化器Converters 2自定义转化器 1 maven 2 gradle 3 混淆前言Retrofit2.0的基础就是okhttp,现在多与RxJava一起使用,恩,下面先讲一下它的优缺点:优点: 可以配置不同 阅读详情

       网络请求在 Android 中的使用非常多,在上一篇文章中我们简单的介绍了 OkHttp 的基本使用,今天我们来入门一下 Retrofit 网络请求库,在 github 上到目前为止,Retrofit 的 Star 数量已经到了 22 k,Fork 4.6 k,看到这里我们就能感觉到 Retrofit 的火热程度,所以我们有必要来认真了解一下 Retrofit 的使用


一、概述


       随着 Volley 的逐渐没落,OkHttp 使用的越来越火爆,但是 Retrofit 却对 OkHttp 的依赖性很强,Retrofit 是由 Square 公司出品的针对 Android 和 Java 的网络请求客户端,其实看源码会发现,其实质上就是对 OkHttp 的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络请求的底层,Retrofit 专注于封装接口完成业务需求,OkHttp 专注网络请求的高效安全,具体来说就是应用程序通过 Retrofit 来发起网络请求,实际上是使用 Retrofit 接口层封装请求参数信息,如 url、header 等,之后由OkHttp 完成后续的请求操作,服务端返回数据之后,OkHttp 将结果交给 Retrofit,Retrofit 对结果进行相应的处理,还有很重要的就是 Retrofit 提供了对 RxJava 的支持


Retrofit GitHub 地址:https://github.com/square/retrofit

官网地址:http://square.github.io/retrofit/


二、Retrofit 2.0 与之前版本的区别


既然我们的题目是 Retrofit 2.0,那么想必 2.0 和之前的版本可能有一些不同,接下来我们就来看看有哪些具体不同的地方:

  • Retrofit 1 中使用的是 RestAdapter,而到了 2.0 中使用的是 Retrofit 实例
  • setEndpoint 改为 baseUrl
  • Retrofit 1 中使用 setRequestInterceptor 设置拦截器,对 http 请求进行相应的处理
  • Retrofit 2.0 通过 OkHttp 的拦截器拦截 http请求进行监控,重写或重试,日志打印
  • converter,Retrofit1中的 setConverter,换以 addConverterFactory,用于支持 Gson 的装换
其实还不止这些,版本还在一直的更新中:大家可以去这里自行参考,上面我们是具体看了下主要使用到的功能:


三、 Retrofit 使用详解


1. 在 Gradle 中添加依赖库,这里别忘了接着在 AndroidManifest.xml 清单文件中添加一下网络权限


compile 'com.squareup.retrofit2:retrofit:2.3.0'

<uses-permission android:name="android.permission.INTERNET"/>

2. 创建接受服务器数据的类

说明一下,我们这里是模拟来说明情况,具体到项目中还要以自己公司服务器返回的具体数据为准

/**
 * 接受服务器返回的数据类(模拟)
 * Created by qiudengjiao on 2017/8/2.
 */

public class User {
    
    private String userName;
    private String password;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}


3.创建描述网络请求的接口 ApiService

/**
 * 用于描述网络请求的接口
 * Created by qiudengjiao on 2017/8/1.
 */

public interface ApiService {
    // @GET:采用Get方法发送网络请求
    @GET
    Call<User> getUser();
    // getCall()是自定义的接收网络请求数据的方法
    // 其中返回类型为Call<*>,*是接收数据的类,这里我们定义为User类
    // 如果想直接获得Responsebody中的内容,可以定义网络请求返回值为Call<ResponseBody>
}


       在使用 Retrofit 进行网络请求时,Retrofit 将 http 请求抽象成接口,采用注解描述网络请求参数和配置网络请求参数,这就要求我们要对 Retrofit 注解要有清晰地了解,接下来我们就来看看 Retrofit 注解的使用

4. Retrofit 注解类型

4.1 方法注解:

@GET、@POST、@PUT、@DELETE、@PATH、@HEAD、@OPTIONS、@HTTP


@GET、@POST、@PUT、@DELETE、@HEAD 对应于网络请求的方式,例如:

/**
 * 用于描述网络请求的接口
 * Created by qiudengjiao on 2017/8/1.
 */

public interface ApiService {
    // @GET:采用Get方法发送网络请求
    @GET
    Call<User> getUser();

    // @POST:采用POST方法发送网络请求
    @POST
    Call<User> postUser();

    // @PUT:采用PUT方法发送网络请求
    @PUT
    Call<User> putUser();

    // @DELETE:采用DELETE方法发送网络请求
    @DELETE
    Call<User> deleteUser();
}

@HTTP 可以替代其他方法的任意一种:

    /**
     * method 表示请求的方法,不区分大小写
     * path表示路径
     * hasBody表示是否有请求体
     */
    @HTTP(method = "get", path = "users/{user}", hasBody = false)
    Call<ResponseBody> getFirstBlog(@Path("user") String user);
       这个注解比较特殊一点,@HTTP 可以替换@GET、@POST、@PUT、@DELETE、@HEAD 注解的作用,还可以用于更多功能的扩展,并且可以通过 method、path、hasBody 这些属性进行设置


4.2 标记注解:


@FormUrlEncoded、@Multipart、@Streaming


@FormUrlEncoded 作用:发送 form-encoded 的数据,每个键值对需要用 @Filed 来注解键名。随后的对象需要提供值

/**
 *表明是一个表单格式的请求(Content-Type:application/x-www-form-urlencoded)
 * <code>Field("username")</code> 表示将后面的 <code>String name</code> 中 name 的取值作为 username 的值
 */
 @POST("/form")
 @FormUrlEncoded
 Call<ResponseBody> testFormUrlEncoded(@Field("username") String name, @Field("age") int age);

@Multipart 作用:适用于有文件上传,发送 form-encoded 的数据的场景

 @POST("/form")
 @Multipart
 Call<ResponseBody> testFileUpload(@Part("name") RequestBody name, @Part("age") RequestBody age, @Part MultipartBody.Part file);

@Streaming 作用:用于下载大文件

@Streaming
@GET
Call<ResponseBody> downloadFile(@Url String fileUrl);


4.3 参数注解:


@Query、@QueryMap、@Body、@Field、@FieldMap、@Part、@PartMap


@Query、@QueryMap 作用:用来查询参数,用于 GET 方法查询,需要注意,@QueryMap 可以约定是否需要 encode


@Body作用:用于POST请求体,将实例对象根据转换方式转换为对应的 json 字符串参数,这个转化方式是 GsonConverterFactory定义的


@Field、@FieldMap 作用:Post 方式传递简单的键值对,需要添加 @FormUrlEncoded 表示表单提交

@FormUrlEncoded
@POST("user/edit")
Call<User> updateUser(@Field("first_name") String first, @Field("last_name") String last);

@Part、@PartMap 作用:用于 POST 文件上传,其中 @Part MutipartBody.Part 代表文件,@Part("key")RequestBody 代表参数,需要添加 @Multipart 表示支持文件上传的表单

@Multipart
@POST("upload")
Call<ResponseBody> upload(@Part("description") RequestBody description,@Part MultipartBody.Part file);


4.4 其他注解:

@Path、@Header、@Headers、@Url


@Path作用:URL 占位符,用于替换和动态更新,相应的参数必须使用相同的字符串被 @Path 进行注释

@GET("group/{id}/users")
Call<User> getUser(@Path("id") int groupId);
//--> http://baseurl/group/groupId/users

//等同于:
@GET
Call<User> getUser(@Url String url);

@Header作用:header 处理,不能被相互覆盖,用于修饰参数

//动态设置Header值
@GET("user")
Call<User> getUser(@Header("Authorization") String authorization)


等同于:

//静态设置Header值
@Headers("Authorization: authorization")//这里authorization就是上面方法里传进来变量的值
@GET("widget/list")
Call<User> getUser()

@Headers作用:用于修饰方法,用于设置多个 Header 的值:

@Headers({
    "Accept: application/vnd.github.v3.full+json",
    "User-Agent: Retrofit-Sample-App"
})
@GET("users/{username}")
Call<User> getUser(@Path("username") String username);

@Url作用:直接传入 URL 变量 用于设置 URL

       到这里 Retrofit 注解我们就说完了,但还有一个比较重要的也是我们需要注意得点,这里我们要说明一下 Retrofit 中 URL 的组成,下面我们拿官网的一段代码来具体讲解:

public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build();

GitHubService service = retrofit.create(GitHubService.class);


       这些注解都有一个参数 value,用来配置其路径,比如示例中的 users/{user}/repos,我们还注意到在构造 Retrofit 之时我们还传入了一个 baseUrl(“https//api.github.com/”),请求的完整 Url 就是通过 baseUrl 与注解的 value(下面的"path") 整合起来的,具体整合的规则如下:

1)path 是绝对路径的形式:

path = "/apath",baseUrl = "http://host:port/a/b"

Url = "http://host:port/apath"

2)path 是相对路径,baseUrl 是目录形式:

path = "apath",baseUrl = "http://host:port/a/b"

Url = "http://host:port/a/b/apath"

3)path 是相对路径,baseUrl 是文件形式:

path = "apath",baseUrl = "http://host:port/a/b"

Url = “http://host:port/a/apath”

建议用第二种方式来配置,并尽量使用同一种路径形式,这里要特别注意,防止混合采用多种配置形式出现一堆 bug

4. 创建 Retrofit 实例:

 Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://www.baidu.com/") // 设置网络请求的Url地址
                .addConverterFactory(GsonConverterFactory.create()) // 设置数据解析器
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // 支持RxJava平台
                .build();

这里主要是设置网络请求的地址,数据解析器以及设置支持 RxJava,数据解析器(converters)Google 官方提供了如下几种:



鉴于很多人使用的是阿里的 fastjson,这里可以去 Gradle 中添加如下依赖,就可以使用 fastjson 了:

compile 'org.ligboy.retrofit2:converter-fastjson-android:2.1.0'

代码中也是相同的设置如下:

  Retrofit.Builder retrofit = new Retrofit.Builder();
        retrofit.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(FastJsonConverterFactory.create())
                .baseUrl("")
                .build();


5. 创建网络请求接口实例

        // 创建 网络请求接口 的实例
        ApiService apiService = retrofit.create(ApiService.class);
        //对 发送请求 进行封装
        Call<User> call = apiService.getUser();

6. 发送网络请求(异步)

        //发送网络请求(异步)
        call.enqueue(new Callback<User>() {
            //请求成功时回调
            @Override
            public void onResponse(Call<User> call, Response<User> response) {
                //请求处理,输出结果
                response.body().getUserName();
                response.body().getPassword();
            }
            //请求失败时回调
            @Override
            public void onFailure(Call<User> call, Throwable t) {

            }
        });

上面步骤完整的代码:

        //创建Retrofit.Builder实例
        Retrofit.Builder retrofitBuilder = new Retrofit.Builder();
        //创建Retrofit实例
        Retrofit retrofit = retrofitBuilder
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(FastJsonConverterFactory.create())
                .baseUrl("https://www.baidu.com/")
                .build();
        // 创建 网络请求接口 的实例
        ApiService apiService = retrofit.create(ApiService.class);
        //对 发送请求 进行封装
        Call<User> call = apiService.getUser();
        //发送网络请求(异步)
        call.enqueue(new Callback<User>() {
            //请求成功时回调
            @Override
            public void onResponse(Call<User> call, Response<User> response) {
                //请求处理,输出结果
                response.body().getUserName();
                response.body().getPassword();
            }
            //请求失败时回调
            @Override
            public void onFailure(Call<User> call, Throwable t) {

            }
        });

       到这里我们就把 Retrofit 网络请求的完整过程一步步解释完毕了,如果实际项目中大家有必要进行进一步的封装,相信大家也看到了,如果就这么去使用,相信你会用到吐血,今天的分享就到这里,大家也可以去看看 Retrofit 的官网进行更进一步的了解,今天主要是详细的介绍了一下 Retrofit 中一些具体的用法的解析,并没有进行更完整的 get、post 请求,如果大家认证阅读相信也能很好的实现出来,谢谢,如有错误请指出



converter-fastjson-android-2.1.0.jar 立即下载

相关推荐

retrofit converter-gson converter-scalars fastjson

retrofit converter-gson converter-scalars fastjson .... jar包 找了半天,在csdn下的全是缺少这缺少那的,下载全齐了。

android rxjava工具类,RxJava(十三):RxAndroid 2.x 和 Retrofit 的使用

1. RxAndroid 2.x 简介1.1 介绍近几年 RxJava 逐渐成为 Android 开发的新宠,越来越多的 Android 开发者正在使用或者即将使用 RxJava 。要想在 Android 上使用 RxJava, RxAndroid 必不可少.RxAndroid GitHub 地址https://github.com/ReactiveX/RxAndroidRxAndroid 也隶属...

weixin_32392583的博客 623

Verilog仿真时读取bin文件模拟输入数据流,将输出数据流写入bin文件

需要关注的是,一般会省略文件起始地址和读取长度,那么mem为多大,就会从文件中读取多大的数据出来填充mem。如果只需要读取一次文件,那么代码到此就结束了,但是如果还需要每一帧都读取该文件转换为数据流,则在循环里判断新的一帧信号是否到来,在新的一帧再次打开一次文件,从头开始读取数据。

qq_41137205的博客 2772

Retrofit2 使用FastJson作为Converter

Retrofit2 使用 FastJson 作为序列化工具

Lincoln 的专栏 1万+

基于FPGA的图像预处理系统(图)

 北京机械工业学院 韩娟娟 邓文怡 娄小平 由于获取图像的工具或手段的影响,使获取图像无法完全体现原始图像的全部信息。因此,对图像进行预处理就显得非常重要。预处理的目的是改善图像数据,抑制不需要的变形或者增强某些对于后续处理来说比较重要的图像特征。通常根据预处理目的的不同,把预处理技术归为图像增强技术和图像分割技术两类。图像对比度处理是空间域图像增强的一种方法。由于图像灰度范围狭窄会使

lyzhangxianglove的专栏 1780

virtuoso根据原理图绘制版图并联接_virtuoso画原理图

Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘. 三 . 用 Check...

weixin_33536190的博客 4144

leancloud网络存储集成的坑

leancloud网络存储集成的坑 官方文档: 如果是 Android 项目,则换成以下这些包: implementation (‘cn.leancloud:storage-android:5.0.23’){ exclude group: ‘com.alibaba’, module: ‘fastjson’ exclude group: ‘org.ligboy.retrofit2’, module:...

qq_20184243的博客 439

【yolo】如何在 YOLOv8 中添加负样本以减少误检

在YOLOv8目标检测中,误检(False Positive)是一个常见问题,即模型将非目标区域错误识别为目标。通过引入负样本(Negative Samples),即不包含任何目标框的图像,可以有效减少误检。在YOLOv8中添加负样本的方法是为这些图像提供空的标注文件(.txt),确保每张图像都有对应的标注文件,即使内容为空。可以使用Python脚本自动生成这些空标注文件。使用负样本时需注意数量比例、标注一致性、验证集同步和图像质量。适当加入负样本能显著提升模型鲁棒性,降低误判风险。

songhuangong123的博客 2879

android studio 中使用fastjson

1、build.gradle (moudle app)中加入依赖,很难下载,可以到maven的官网中去搜索 fastjson andrid 找到对应android版本 https://mvnrepository.com/artifact/com.alibaba/fastjson dependencies { //fastjson compile group: 'org.lig...

zyfzhangyafei的专栏 2897

RK3568平台(平台总线篇)Gsensor STK8BA50

Gsensor,即加速度传感器(Accelerometer),是一种用于测量物体加速度的电子设备。以下是其关键点:1.工作原理MEMS技术:大多数Gsensor基于微机电系统(MEMS),通过检测质量块的位移来测量加速度。压电效应:部分Gsensor利用压电材料在受力时产生电压的特性来测量加速度。2.主要功能加速度测量:测量物体在X、Y、Z三个方向上的加速度。倾斜检测:通过重力加速度判断设备的倾斜角度。运动检测:识别设备的运动状态,如静止、移动、晃动等。震动检测:感知设备的震动或冲击。

weixin_49303682的博客 480

STM32实战开发(120):基于STM32的智能pH值检测系统开发

pH值检测:通过pH传感器实时检测溶液的酸碱度。数据采集与处理:STM32单片机通过模拟信号采集并进行数字化处理。数据显示与控制:通过LCD或OLED屏幕实时显示pH值。数据存储与上传:将数据保存在本地SD卡,或通过Wi-Fi模块上传至云平台。低功耗设计:适合长时间运行,减少能源消耗。本文介绍了如何基于STM32单片机开发智能pH值检测系统,涉及硬件设计、软件开发及应用实现。该系统可以实时检测pH值,并将数据展示、存储、上传至云平台,适用于环境监测、农业、水处理等多个领域。

2201_76125393的博客 1817

【亲测免费】 Retrofit-Converter-FastJson 使用教程

Retrofit-Converter-FastJson 使用教程 1、项目介绍 Retrofit-Converter-FastJson 是一个为 Retrofit 提供的 FastJson 转换器。Retrofit 是 Android 和 Java 平台上一款优秀且被广泛使用的 Http 客户端,而 FastJson 是阿里巴巴开源的一款高性能的 JSON 库。这个转换器允许你在 Retrofit...

gitblog_00399的博客 1288

全志A133的AndroidSDK

本小节来学习如何下载全志安卓SDK,SDK的目录,编译和烧录提示:以下是本篇文章正文内容,下面案例可供参考以上就是整个SDK的目录和编译烧录,目的在于让初学者快速了解整个源码的目录和编译出镜像喜欢就订阅吧。

qq_24093081的博客 4054

Android Retrofit2.0使用详解

前言 首先是我接触Retrofit的时候还是2017年培训的时候接触过的,当时觉得非常的高大上,而且用着真的非常复杂,不如OkHttp那样爽,当一年后去了一家公司之后发现用的是Retrofit,看代码的时候一脸懵逼,所幸的是公司给了提前熟悉代码的时间,然后科普了几天的Retrofit和Rxjava,今天先记录一下Retrofit2.0的使用。 介绍 Retrofit是什么? Retrofit其...

张晓辉的博客 1万+

android11.0 Launcher3 高端定制之循环滑动

待机界面可以向左、向右循环切换页面 效果图 修改清单 packages/apps/Launcher3/res/values-zh-rCN/strings.xml packages/apps/Launcher3/res/values/config.xml packages/apps/Launcher3/res/values/strings.xml packages/apps/Launcher3/res/xml/launcher_preferences.xml packages/apps/Launc

cczhengv 1549

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Retrofit2.0的基本使用

前言:最近研究了一下时下最火的网络Http Client库,Retrofit2.0。因为之前一直没赶上1.0的趟,所以这次务必要快点上车啦。话不多说,直接开始! 特点: 1、性能好,处理快,使用简单 2、使用REST(REpresentational State Transfer,表述性状态转移) API,非常方便 3、支持NIO(NEW IO,主要作用就是用来解决速度差异的)

Koro1丶的博客 495

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Retrofit2.0(一)retrofit基本使用讲解和Converter转换器使用

Retrofit2.0使用 应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作,在服务端返回数据之后,OkHttp 将原始的结果交给 Retrofit,后者根据用户的需求对结果进行解析的过程 根据需要添加依赖 //retrofit2 compile 'com.squa...

5ingwings(SiHao)的博客 7568

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Retrofit2.0的使用

Retrofit2.0 一、添加依赖 compile 'com.squareup.retrofit2:retrofit:2.2.0' 二、简单使用 RetroFit使用步骤: 1.定义一个接口(封装url地址和数据请求) 2.实例化retrofit 3.调用retrofit实例创建接口服务对象 4.调用接口中的方法获取Call对象 5.call对象请求(异步\同步请求...

备忘录 996

Android Retrofit 2.0的基本使用

原文地址:http://blog.magicer.xyz/2017/01/android-retrofit2-basic/简介Retrofit是square公司全家桶中的一员。在okhttp基础上封装的一个网络请求框架。其他废话就不多说了。有几篇不错的文章,可以看一下。 官方介绍 深入浅出 Retrofit,这么牛逼的框架你们还不来看看? Retrofit2.0集成compile 'com.s

Captain_Magicer的博客 726

Kotlin 使用Retrofit2.0

首先导入gradle Retrofit2.0 implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' 直接上代码 interface GetRequest_Interface { @GET("channels/3?pageNo=1&pageSize=20&v=4.0.0") fun getCa

augfun的博客 648

android retrofit 2.0,Android Retrofit2.0 RxJava3.0 基本使用

Android Retrofit2.0 RxJava3.0 基本使用这篇文章对于学习这个知识点有较好的参考作用,需要了解这方面技术的可以斟酌学习一下。一,ReactiveX要学习RxJava,那么不得不提他的由来ReactiveX,ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。ReactiveX是Reactiv...

weixin_30916627的博客 374

Retrofit2.0的使用总结

Retrofit2.0的使用总结 工作中的网络访问框架使用的就是retrofit2.0,用了一段时间感觉还不错,分享一下使用retrofit框架的基本使用方法和经验. retrofit基本使用 1. 构建Retroift对象 首先使用retrofit需要一个Retrofit对象,需要设定baseUrl即根地址,同时关联网络访问,使用的就是okhttp网络访问。也要规定解析的方式,使用Gs

qq_24055907的博客 529

Retrofit2.0使用过程中所踩到的坑

Retrofit2.0使用过程中所踩到的坑 转载请注明出处 作者:AboutJoke ( http://blog.csdn.net/u013200308 ) 原文链接:http://blog.csdn.net/u013200308/article/details/51168922

AboutJoke的博客 4702

Android Retrofit2.0+RxJava3.0 基本使用

异常: Could not locate call adapter for io.reactivex.Observable<okhttp3.ResponseBody>. compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' RxJava适配器是1.0 所以换成RxJava2.0就可以了,两种方式配置RxJava适配器2.0 1,第三方的提供的适配器2.0 compile 'com.jakewharton.retrofit:retro

ezconn的博客 9705

Retrofit 2.0 基本使用

1.引入对应架包 compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0' //适配器  compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' //RxJava compile 'io.r...

老朱gpt的博客 272

Retrofit 2.0 使用教程

本文的详细的使用细节请参考:https://blog.csdn.net/carson_ho/article/details/73732076 Android Retrofit 2.0 使用-补充篇 Retrofit的简易封装:https://blog.csdn.net/whj9073/article/details/84991663 使用 Retrofit 的步骤共有7个: 步骤1:添加R...

whj9073的专栏 639
上一篇: OkHttp 3 基本用法
下一篇: Android 四大组件之 Service (上)
QDJdeveloper
博客等级 码龄11年 108粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值