Retrofit--网络请求框架
一、什么是Retrofit
Retrofit是Adnroid常用的一种网络请求框架,他是一个基于OkHttp网络请求的封装了网络请求接口的框架
二、Retrofit的基本使用
1.需要添加Retrofit和OkHttp的依赖 2.添加对应的网络请求权限 3.创建接受服务器返回数据的类(类文件) 4.创建用于描述的网络接口 5.创建Retrofit对象 6.创建网络请求接口的实例 7.发送网络请求 8.接收并处理返回数据
三、网络请求的一些方法以及参数设置
3.1 接口常见形式:
@Get
public interface XXXX { @GET("XXXX") Call<ResponseBody> getCall(); } //XXX是url后面是根据前后端通信url具体定义的参数形式
@POST
public interface PostRequestGridPageTaskList { @Headers({"Content-Type: application/json","Accept: application/json"}) @POST("XXXXX{id}") Call<ResponseBody> getCall(@Path("id") int id); } // {id} 表示是一个变量 // headers里的是一个具体的头形式
3.2 上传格式:
@FromUrlEncoded
每个键值对需要用@Filed来注解键名;
@Multipart
适用于有文件上传的场景,每个键值对需要用@Part来注解键名;
@Path
适用于url地址参数需要变化的场景
@POST("/form") @FormUrlEncoded Call<ResponseBody> XXX(@Field("name") String name, @Field("age") int age); // @POST("/form") @Multipart Call<ResponseBody> XXX(@Part("name") RequestBody name, @Part("age") RequestBody age, @Part MultipartBody.Part file); // @GET("users/{user}") Call<ResponseBody> getBlog(@Path("user") String user ); // 访问的API是:https://XXXX/user/{user}// 在发起请求时, {user} 会被替换为方法的第一个参数 user(被@Path注解作用) }
四、Retrofit创建实例
//创建retrofit对象 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://fanyi.youdao.com/") // 设置网络请求的Url地址 .addConverterFactory(GsonConverterFactory.create()) // 设置数据解析器 一般用GJson .build(); //创建接口XXX的实例 XXX request = retrofit.create(XXX.class); //对发送请求进行封装 XXX是接口中定义好的responseBody Call<ResponseBody> call = request.XXX(); //发送网络请求(异步) call.enqueue(new Callback<Translation>() { //请求成功时回调 @Override public void onResponse(Call<Translation> call, Response<Translation> response) { //处理返回的数据结果 response.body().show(); } //请求失败时回调 @Override public void onFailure(Call<Translation> call, Throwable throwable) { System.out.println("连接失败"); } }); }