Android学习之Retrofit2学习

本文介绍了如何使用Retrofit2进行Android网络请求,包括添加依赖、接口定义、参数标记和请求示例,适合快速上手网络请求库的开发者。

Android

Android学习系列

Android之Room学习

Android之自定义View学习(一)

Android之自定义View学习(二)

Android之消息机制学习

Android学习之Navigation学习(一)Navigation初体验

Android学习之Retorfit2学习

Android学习之Retrofit2学习

前言

连更几天的数据结构与算法,有点肝不动了,虽然今天刚刚看了红黑树创建操作的具体情况,但是今天还是想给大家介绍一个比较火热的安卓网络请求库Retrofit2,主要还是说一下这一请求库的应用。

一、模拟请求网站

android有着诸多的网络请求架构与网络请求库,在介绍我们今天的主角Retrofit2之前,先介绍一个我们用于测试用的模拟请求网站:https://mock-api.com/app.html,它可以通过自定义GET/POST请求规则构建一个可以访问的url。
建立过程主要分为四个步骤:

  1. 创建自己的模拟系统,并进入模拟系统
  • 创建中:
    新建模拟系统

  • 创建完成:
    模拟系统给

  1. 进入系统,定义所想要的请求规则(一般都是GET/POST)
    左侧需要定义Request请求,右侧需要定义Response响应。当然注意格式一般都是json格式(Request部分也可以选择其他格式,但是表现在url上都大同小异)。
    Request请求格式
    同时需要注意下大小写之分,因为这对我们后续Retrofit2的使用十分重要。
  • GET请求:
    GET

  • POST请求:
    POST

二、Retrofit2简介

Retrofit2是Square公司开源的网络请求封装库,其底层是基于OKHttp网络请求框架的实现的,当然OKHttp也是Square公司推出的罢了。搭配其他的框架(GSON格式的Response),Retrofit2使得请求变得简便,搭建变得更容易实现。

三、Retrofit2注解

下面列三个表格进行常用Retrofit2注解说明。一类是请求格式列表,一类是标记,还有一类是网络请求参数

请求格式列表:

注解请求形式 说明
@GET get请求
@POST post请求
@HEAD head请求
@PUT put请求
@DELETE delete请求
@PATCH patch请求,对put请求进行
@OPTION option请求
@HTTP http/https请求,需要指明三个属性method,path,hasBody

一般最常见的就是使用@GET和@POST注解。
而在GET请求,我们知晓,添加的参数(Query_String)均直接显示在url中。

标记

标记一般都是Post请求的其他几种数据传方式。

参数形式 说明
@FormUrlEncoded Post请求上传表单数据
@Multipart Post请求上传文件数据
@Streaming Post请求返回数据流形式数据,适用于大数据场景

网络请求参数列表:

  1. @GET
    | 网络请求参数形式 | 说明 |
    | :-------: | :–: |
    | @Query | 指定url后接单一参数 |
    | @QueryMap | 指定url后接多个参数 |

  2. @POST
    | 网络请求参数形式 | 说明 |
    | :---------------: | :-----------------------------------------------------: |
    | @Body | 用于post请求传输json格式数据 |
    | @Field、@FieldMap | 与@FormUrlEncoded标记合用,用于post请求传输表单数据使用 |
    | @Part、@PartMap | 与@Multipart标记合用,用于post传输文件使用 |

  3. 通用
    | 网络请求参数形式 | 说明 |
    | :---------------: | :----------------------------------------: |
    | @Header、@Headers | 添加请求头(header为添加不固定值的header) |
    | @Path | 路径替换参数 |
    | @URL | 设置URL |

四、Retrofit2使用

在分别给出上述网络请求方式的规则(GET and POST为例)之前,我们先来理清一下发起请求之前所需要做的准备工作。

Step 1 添加依赖库

//build.gradle.kt
dependencies {
   
   
    implementation("com.squareup.retrofit2:retrofit:2.9.0")
    implementation("com.squareup.retrofit2:converter-gson:2.9.0")
    testImplementation(kotlin("test-junit"))
}

这里添加了一个converter-gson用于将response的body进行数据格式转换。

Step 2 开始准备retrofit——定义接口,在其中声明请求函数以及返回 回调

interface WebService {
   
   
    @GET("api/webInfo")
    fun getWebInfo(): Call<WebInfo>

    @GET("api/userInfo")
    fun getUserInfo(@Query("id") id :Int): Call<UserInfo>

    @GET("api/article/{bookName}/page/{page}")
    fun getContentOfBook(@Path("bookName") bookName:String, @Path("page") page:Int) :Call<ResponseBody>

    @POST("api/login")
    fun 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT 涓涓清泉

感谢打赏,我会更加努力写更好的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值