文章目录
- 一、前言
- 二、POST应用
- 三、GET应用
一、前言
Retrofit2 是基于 OkHttp 构建的 RESTful HTTP 客户端,专门用于简化 HTTP 请求的过程,尤其是用于访问 RESTful API。
Retrofit2 提供了一个声明式的方式来定义 REST API 接口,通过注解来描述请求方法、请求参数、请求头等,它自动处理了请求的创建、执行、响应的转换等步骤。
Retrofit2 默认使用 OkHttp 来执行网络请求,并且可以与 OkHttp 结合使用以发挥更强大的功能。
二、POST应用
请求地址:
POST: https://reqres.in/api/users
发送的数据
{
"name": "morpheus",
"job": "leader"
}
接收到的数据
{
"name": "morpheus",
"job": "leader",
"id": "171",
"createdAt": "2021-12-22T11:46:26.302Z"
}
接下来代码实现,先创建解析类UserParse,用于序列化字符串:
package com.example.myapplication;import com.google.gson.annotations.SerializedName;public class UserParse {@SerializedName("name")String name;@SerializedName("job")String job;@SerializedName("id")String id;@SerializedName("createdAt")String createdAt;
}
接下来创建api接口类ApiService
package com.example.myapplication;import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;public interface ApiService {// post请求@POST("api/users")@FormUrlEncodedCall<UserParse> createUser(@Field("name") String name, @Field("job") String job);
}
请求实现:
// retrofit2 post 请求
private void retroFit2postDemo(){String baseUrl = "https://reqres.in/";Retrofit mRetrofit = new Retrofit.Builder().baseUrl(baseUrl)// 将字符串转换成java对象.addConverterFactory(GsonConverterFactory.create()).build();tvContent.setText("异步请求中.......");mRetrofit.create(ApiService.class).createUser("admin", "java").enqueue(new retrofit2.Callback<UserParse>() {@Overridepublic void onResponse(retrofit2.Call<UserParse> call, retrofit2.Response<UserParse> response) {// 处理请求成功的响应String name = response.body().name;String job = response.body().job;String id = response.body().id;String createdAt = response.body().createdAt;// 在这里处理响应数据tvContent.setText("异步请求成功" + ',' + name + ',' + job + ',' + id + ',' + createdAt);}@Overridepublic void onFailure(retrofit2.Call<UserParse> call, Throwable t) {// 处理请求失败tvContent.setText("异步请求失败");}});
}
效果图:
三、GET应用
请求地址:
GET: https://reqres.in/api/users?page=2
接收到的数据:
代码实现创建解析类UserPageParse
package com.example.myapplication;import com.google.gson.annotations.SerializedName;public class UserPageParse {@SerializedName("page")Integer page;@SerializedName("total")Integer total;@SerializedName("total_pages")Integer total_pages;
}
接下来创建api接口类ApiService
package com.example.myapplication;import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;public interface ApiService {// get请求@GET("api/users")// UserList 请求函数名,page请求参数Call<UserPageParse> UserList(@Query("page") Integer page);
}
请求实现:
// retrofit2 get 请求
private void retroFit2getDemo(){String baseUrl = "https://reqres.in/";Retrofit mRetrofit = new Retrofit.Builder().baseUrl(baseUrl)// 将字符串转换成java对象.addConverterFactory(GsonConverterFactory.create()).build();tvContent.setText("异步请求中.......");mRetrofit.create(ApiService.class).UserList(2).enqueue(new retrofit2.Callback<UserPageParse>() {@Overridepublic void onResponse(retrofit2.Call<UserPageParse> call, retrofit2.Response<UserPageParse> response) {// 处理请求成功的响应Integer page = response.body().page;Integer total = response.body().total;Integer total_pages = response.body().total_pages;// 在这里处理响应数据tvContent.setText("异步请求成功" + ',' + page + ',' + total + ',' + total_pages);}@Overridepublic void onFailure(retrofit2.Call<UserPageParse> call, Throwable t) {// 处理请求失败tvContent.setText("异步请求失败");}});
}
效果图: