网络请求Retrofit介绍

2017-12-15  本文已影响0人  浮名虚誉架构师

Retreofit是一个适用于 Android 和 Java 的类型安全的 HTTP 客户端。特别说明Retrofit网络请求本质是有OkHttp完成的,而Retrofit仅负责网络请求接口的封装

使用步骤

添加网络请求权限

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

添加第三方库依赖

implementation 'com.squareup.retrofit2:retrofit:XXX' 

 implementation 'com.squareup.retrofit2:converter-scalars:XXX'

创建用于描述请求的接口

进行请求


网络请求方法

@GET、@POST、@PUT、@DELETE、@HEAD

以上方法分别对应 HTTP中的网络请求方式, 每个注解后面都可以设置一个URL,也可以不设置

标记类

a.FormUrlEncoded

作用:表示发送form-encoded的数据

注意:每个键值对都需要用@Filed来注解键名,随后的对象需要提供值。

b.Multipart

作用:表示发送form-encoded的数据(适用于 有文件 上传的场景)

注意:每个键值对都需要用@part来注解键名,随后对象需要提供值

c.@Streaming

作用:表示返回的数据以流的形式返回,场用于大文件传输的场景

注意:url由于是可变的,因此用 @URL 注解符号来进行指定,大文件官方建议用 @Streaming 来进行注解,不然会出现IO异常,小文件可以忽略不注入。如果想进行断点续传的话 可以在此加入header

网络请求参数

a.@Header & @Headers

作用:添加请求头

b.@Body

作用:以Post方式传递自定义数据类型给服务器

注意: 如果提交的是一个Map,那么作用相当于@Field,不过Map要经过FormBody.Builder 类处理成为符合 Okhttp 格式的表单

c.Field&FieldMap

作用:发送 Post请求 时提交请求的表单字段

注意:与 @FormUrlEncoded 注解配合使用

d.@Part & @PartMap

作用:发送的Post请求时提交的表单字段

注意:与 @Multipart 注解配合使用

与@Field的区别:功能相同,但携带的参数类型更加丰富,包括数据流,所以适用于 有文件上传 的场景

e.@Query和@QueryMap

作用:用于 @GET 方法的查询参数(Query = Url 中 ‘?’ 后面的 key-value)

使用:和上面的两个相同

f. @Path

作用:URL的省缺值

g.@Url

作用:直接传入一个请求的URL变量

上一篇下一篇

猜你喜欢

热点阅读