android: retrofit库的简单例子
一,安装第三方库
库地址:
https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit
编辑build.gradle,添加
// https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit
implementation 'com.squareup.retrofit2:retrofit:2.12.0'
然后点击 Sync Now
二,代码:
接口返回的json格式:
服务接口:
package com.example.okdemo1.interfaces;
import com.example.okdemo1.model.BaseEntity;
import com.example.okdemo1.model.UserListEntity;
import retrofit2.Call;
import retrofit2.http.GET;
public interface ApiServiceInterface {
//get方式,得到用户列表
@GET("/json.php")
Call<BaseEntity<UserListEntity>> getUserList();
}
两个model类:
package com.example.okdemo1.model;
import java.util.List;
public class UserListEntity {
private int code;
private String status;
private String time;
private String msg;
private Data data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public class Data {
private List<UserListItemEntity> list;
public List<UserListItemEntity> getList() {
return list;
}
public void setLabel(List<UserListItemEntity> list) {
this.list = list;
}
}
}
UserListItemEntity
package com.example.okdemo1.model;
public class UserListItemEntity {
private int id;
private String name;
private String image;
public UserListItemEntity(int id, String name, String image) {
this.id = id;
this.name = name;
this.image = image;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
activity xml: 只有一个按钮
activity: java:
package com.example.okdemo1.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.example.okdemo1.MainActivity;
import com.example.okdemo1.R;
import com.example.okdemo1.interfaces.ApiServiceInterface;
import com.example.okdemo1.model.UserListEntity;
import com.example.okdemo1.model.UserListItemEntity;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class ApiActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_api);
//给按钮增加点击事件
Button button2 = findViewById(R.id.apiBtn);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//访问接口
request();
}
});
}
//retrofit2 请求方法
public void request() {
//创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.testit.net") // 设置 网络请求 Url
.addConverterFactory(GsonConverterFactory.create()) //设置使用Gson解析(记得加入依赖)
.build();
//创建 网络请求接口 的实例
ApiServiceInterface request = retrofit.create(ApiServiceInterface.class);
//对 发送请求 进行封装
Call<UserListEntity> call = request.getUserList();
//发送网络请求(异步)
call.enqueue(new Callback<UserListEntity>() {
//请求成功时回调
@Override
public void onResponse(Call<UserListEntity> call, Response<UserListEntity> response) {
//处理返回的数据结果
List<UserListItemEntity> list = response.body().getData().getList();
//遍历list数据
for (int i = 0; i < list.size(); i++) {
UserListItemEntity one = list.get(i);
// 对元素进行操作
System.out.println("one:"+one.getId()+"-"+one.getName()+"-"+one.getImage());
}
}
//请求失败时回调
@Override
public void onFailure(Call<UserListEntity> call, Throwable throwable) {
System.out.println("连接失败");
}
});
}
}