赞
踩
Retrofit2 是基于 OkHttp 构建的 RESTful HTTP 客户端,专门用于简化 HTTP 请求的过程,尤其是用于访问 RESTful API。
Retrofit2 提供了一个声明式的方式来定义 REST API 接口,通过注解来描述请求方法、请求参数、请求头等,它自动处理了请求的创建、执行、响应的转换等步骤。
Retrofit2 默认使用 OkHttp 来执行网络请求,并且可以与 OkHttp 结合使用以发挥更强大的功能。
添加依赖build.gradle
// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
请求地址:
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")
@FormUrlEncoded
Call<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>() {
@Override
public 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);
}
@Override
public void onFailure(retrofit2.Call<UserParse> call, Throwable t) {
// 处理请求失败
tvContent.setText("异步请求失败");
}
});
}
效果图:
请求地址:
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>() {
@Override
public 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);
}
@Override
public void onFailure(retrofit2.Call<UserPageParse> call, Throwable t) {
// 处理请求失败
tvContent.setText("异步请求失败");
}
});
}
效果图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。