Android Retrofit 2,flutter 游戏源代码
支持同步/异步网络请求
支持多种数据的解析 &序列化格式(Gson、json、XML 等等)
通过注解配置网络请求参数
提供对 Rxjava 的支持
高度解耦,使用方便
对比其他网络请求框架
性能最好,速度最快
高度封装导致扩展性差
简洁易用,代码简化
解耦彻底,职责细分
易与其他框架联用(Rxjava)
使用场景
任何场景下建议优先使用
网络请求流程
App 应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作
在服务端返回数据之后,OkHttp 将原始的结果交给 Retrofit,Retrofit 根据用户的需求对结果进行解析
具体使用
1.添加 Retrofit 库的依赖
dependencies {implementation 'com.squareup.retrofit2:retrofit:2.5.0'api 'com.squareup.retrofit2:converter-gson:2.0.2'}
2. 添加 网络权限
<uses-permission android:name="android.permission.INTERNET"/>
3. 创建 装载服务器返回数据 的类
public class ResultData{...// 根据返回数据的格式和数据解析方式(Json、XML 等)定义
}
4. 创建 用于配置网络请求 的接口
Retrofit 将 Http 请求 抽象成 Java 接口:采用 注解 描述网络请求参数 和配置网络请求参数
public interface GetRequestInterface {
@GET("openapi.do?keyfrom=Yanzhikai&key=2032414398&type=data&doctype=json&version=1.1&q=car")Call<ResultData> getCall();// @GET 注解的作用:采用 Get 方法发送网络请求
// getCall() = 接收网络请求数据的方法// 其中返回类型为 Call<*>,*是接收数据的类(即上面定义的 Translation 类)// 如果想直接获得 Responsebody 中的内容,可以定义网络请求返回值为 Call<ResponseBody>}
注解说明
网络请求方法:@GET、@POST、@PUT、@DELETE、@HEAD(常用)
网络请求标记: @FormUrlEncoded、@Multipart、@Streaming
网络请求参数: @Header &、@Headers、 @Body、@Field 、 @FieldMap、@Part 、 @PartMap、@Query、@QueryMap、@Path、@Url
具体作用以及解释请自行前往官方文档查看,这里就不一一解释了
5. 创建 Retrofit 实例
Retrofit retrofit = new Retrofit.Builder().baseUrl("http://fanyi.youdao.com/") // 设置网络请求的公共 Url 地址.addConverterFactory(GsonConverterFactory.create()) // 设置数据解析器.addCallAdapterFactory(RxJavaCallAdapterFactory.create()) // 支持 RxJava 平台.build();
数据解析器说明 Retrofit 支持多种数据解析方式,使用时需要在 Gradle 添加依赖
数据解析器 Gradle 依赖
Gson com.squareup.retrofit2:converter-gson:2.0.2
Jackson com.squareup.retrofit2:converter-jackson:2.0.2
Simple XML com.squareup.retrofit2:converter-simplexml:2.0.2
Protobuf com.squareup.retrofit2:converter-protobuf:2.0.2
Moshi com.squareup.retrofit2:converter-moshi:2.0.2
Wire com.squareup.retrofit2:converter-wire:2.0.2
Scalars com.squareup.retrofit2:converter-scalars:2.0.2
网络适配器说明 Retrofit 支持多种网络请求适配器方式:guava、Java8 和 rxjava Android 提供默认的 CallAdapter,不需要添加网络请求适配器的依赖,若要使用其他网络适配器,则需要按照需求在 Gradle 添加依赖
网络请求适配器 Gradle 依赖
guava com.squareup.retrofit2:adapter-guava:2.0.2
Java8 com.squareup.retrofit2:adapter-java8:2.0.2
rxjava com.squareup.retrofit2:adapter-rxjava:2.0.2
6.创建 网络请求接口实例
// 创建 网络请求接口 的实例 GetRequestInterface request = retrofit.create(GetRequestInterface.class);
//对 发送请求 进行封装 Call<ResultData> call = request.getCall();
7. 发起网络请求(异步 / 同步)
/发送网络请求(异步)call.enqueue(new Callback<ResultData>() {//请求成功时回调 @Overridepublic void onResponse(Call<ResultData> call, Response<ResultData> response) {//处理结果
}
//请求失败时候的回调 @Overridepublic void onFailure(Call<ResultData> call, Throwable throwable) {//提示失败}});
// 发送网络请求(同步)Response<ResultData> response = call.execute();
评论