前言
在开发项目中经常会遇到上传头像的问题,那我们如果使用Retrofit做网络请求时,如何进行使用,在文章的最后有最清晰的使用方法
Retrofit可以认为是Okhttp的 “升级版”,为什么这么说?那是因为其内部默认是基于OkHttp来进行封装的,它们属于同一家公司Square
介绍
常用的网络请求方法
@GET
使用@Query单个参数 @QueryMap多个参数
@POST
使用@Field 单个参数 @FieldMap 多个参数 @Part 上传文件 @PartMap 上传多个文件
总体使用步骤:
1.添加Retrofit依赖库
2.创建接受服务器返回数据的类
3.创建用于描述网络请求的接口
4.创建Rerofit实例
5.创建网络请求接口实例
6.发送网络请求(异步和同步)
7.处理返回数据
8.进阶理解从复杂到精简的过程
9.上传文件使用
使用
当你想要做任何网络请求的操作时,一定要提前首先加上网络权限,这是很多新手容易忘记的通病,以前我也老忘哈哈。。。。。
下面来看具体使用方法:
1.导入依赖包
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.google.code.gson:gson:2.2.4'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
2.创建Bean类
http://v.juhe.cn/toutiao/index?key=d05b58fa6901ad9bed77a1ef08bd6ccb 为了方便给你们提供了一下url地址,仅供学习使用
用gson 快捷方式,生成一个数据类,这个大家都会把,如果不会的话百度搜gosn 插件即可
3.创建存放网络请求的接口
//{name}是一个替换块,搭配@Path("name")动态传参数
public interface PostService{
@GET("{name}/index?key=d05b58fa6901ad9bed77a1ef08bd6ccb")
Call<Getbean> getString(@Path("name") String name);
}
4..创建并初始化Retrofit实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://v.juhe.cn/")//设置网络请求的Url地址
.addConverterFactory(GsonConverterFactory.create()) //设置数据解析器
.build();
5.连接网络请求接口调用其方法
GetService service = retrofit.create(GetService.class);
Call<GetBean> call = service.getString3("toutiao");
6.同步和异步请求方式
//同步操作,必须开启子线程
new Thread(new Runnable() {
@Override
public void run() {
try {
Response<GetBean> execute = call.execute();
GetBean bean = execute.body();
Message msg=hand.obtainMessage();
msg.obj=bean.toString();
msg.what=102;
hand.sendMessage(msg);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
//异步操作
call.enqueue(new Callback<GetBean>() {
@Override
public void onResponse(Call<GetBean> call, Response<GetBean> response) {
GetBean bean = response.body();
Log.e("zhoukang", "" + bean.toString());
}
@Override
public