- 前言:Retrofit做过Android的开发者们都有所了解,一款基于OkHttp的Restful风格的网络开源框架,今天这节课主要讲解下他的基本使用。
我会以尽量简单明了的方式给大家讲解。
Retrofit:2.9.0
测试方式:通过调用金山词霸的翻译功能,测试Retrofit发送和接收数据的功能。
基本使用步骤:
- 步骤1:添加库依赖
com.squareup.retrofit2:retrofit:2.9.0
- 步骤2:创建接收服务器返回的类
2.1:要创建返回类,需要先解析返回的数据格式
通过代理服务器的方式获取到金山词霸返回的数据类型为:
{message:{
baesInfo:{
from:“中文”,
to:”英文“,
translate_result:“翻译结果可以显示”
}
word_name:需要翻译的中文
},
status:“0”
}
可以看出其为标准json格式的数据:固创建下面类:
/**
* 创建解析类
*/
public class Translation {
private int status;
private message message;
private static class message {
private baesInfo baesInfo;
private String word_name;
}
private static class baesInfo {
private String from;
private String to;
private String translate_result;
}
//定义 输出返回数据 的方法
public void show() {
System.out.println(status);
System.out.println(message.baesInfo.from);
System.out.println(message.baesInfo.to);
System.out.println(message.word_name);
System.out.println(message.baesInfo.translate_result);
}
public String getResult() {
return message.baesInfo.translate_result;
}
}
- 步骤3:创建用于描述网络请求的接口
我们先来分析服务器的网络接口:
host:dict.iciba.com
获取方式:GET HTTP/1.1
URL = :client=1×tamp=1637143127&isChangeTo=0&sign=63243e0fb77fa81e&uuid=d6ceb7789ff04ff69355cea0a3325e40&sv=android10&v=11.1.7&uid=&translateType=-1&identity=12&key=1000001&word=%25E4%25BD%25A0%25E5%25A5%25BD%25E5%25B0%258F%25E5%25A7%2590&signature=7cdc8cee1566bde7c34a817fbab31a20
根据分析我们可以创建出接口请求类:
/**
* 创建用于描述网络请求的接口
*/
public interface GetRequest_Interface {
@GET("/dictionary/word/query/v2?client=1×tamp=1637143127&isChangeTo=0&sign=63243e0fb77fa81e&uuid=d6ceb7789ff04ff69355cea0a3325e40&sv=android10&v=11.1.7&uid=&translateType=-1&key=1000001&identity=12&word=%25E4%25BD%25A0%25E5%25A5%25BD%25E5%25B0%258F%25E5%25A7%2590&signature=7cdc8cee1566bde7c34a817fbab31a20")
Call<Translation> getCall();
// 注解里传入 网络请求 的部分URL地址
// Retrofit把网络请求的URL分成了两部分:一部分放在Retrofit对象里,另一部分放在网络请求接口里
// 如果接口里的url是一个完整的网址,那么放在Retrofit对象里的URL可以忽略
// getCall()是接受网络请求数据的方法
}
- 步骤4:创建Retrofit实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://dict.iciba.com") // 设置 网络请求 Url
.addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)
.build();
- 步骤5:创建网络请求接口实例
GetRequest_Interface request = retrofit.create(GetRequest_Interface.class);
- 步骤6:发送网络请求(同步或者异步),此处使用异步方式
Call<Translation> call = request.getCall();
call.enqueue(new Callback<Translation>() {
//请求成功时回调
@Override
public void onResponse(Call<Translation> call, Response<Translation> response) {
// 步骤7:处理返回的数据结果
response.body().show();
}
//请求失败时回调
@Override
public void onFailure(Call<Translation> call, Throwable throwable) {
System.out.println("连接失败");
}
});
- 步骤7:处理返回数据
结果显示:
from:中文
to:英文
request:我爱你
result:I love you
总结:以上就是Retrofit基本使用方式,后面会讲解相关源码,期待一起进步。