build.gradle
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
++ implementation 'com.squareup.retrofit2:retrofit:2.9.0'
++ implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}
测试接口文档:
https://api.qqsuu.cn/doc/dm-caipu.html
先来看看请求体:
CaiPuService.java
public interface CaiPuService {
@POST("https://api.qqsuu.cn/api/dm-caipu")
// 方法参数
Call<TestRequest> caiPu(@Query("word") String word, @Query("page") String page);
}
因为响应体数据如下:
{
"code": 200,
"msg": "success",
"data": {
"curpage": 1,
"allnum": 10,
"list": [
{
"id": 1983,
"type_id": 81,
"type_name": "民族菜",
"cp_name": "西红柿炒鸡蛋",
"zuofa": "1.把西红柿洗净,去蒂,切成象眼块;鸡蛋打入碗内,加入精盐,少许搅匀,用热油炒散。2.将炒锅放入油,烧热后放入西红柿、鸡蛋,搅均匀加入白糖、精盐、再搅炒几下,开后勾芡即成。",
"texing": "红黄相间,味道鲜美。",
"tishi": "",
"tiaoliao": "",
"yuanliao": "西红柿500克,鸡蛋2个,植物油50克,白糖25克,精盐5克,水淀粉15克。"
}
]
}
}
所以我们要新建对应的数据获和实体类data
TestRequest.java
public class TestRequest {
String msg;
int code;
data data;
}
data.java
public class data {
int curpage;
int allnum;
List list;
}
MainActivity.java
new Thread(new Runnable() {
@Override
public void run() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.qqsuu.cn/api/dm-caipu/")
.addConverterFactory(GsonConverterFactory.create())
.build();
CaiPuService caiPuService = retrofit.create(CaiPuService.class);
Call<TestRequest> call = caiPuService.caiPu("西红柿炒鸡蛋","1");
call.enqueue(new Callback<TestRequest>() {
@Override
public void onResponse(Call<TestRequest> call, Response<TestRequest> response) {
// 请求成功回调
TestRequest user = response.body();
Log.d(TAG,"成功="+user.msg+"---"+user.code+"---"+user.data.allnum+"---"+user.data.curpage+"-----"+user.data.list.toString());
}
@Override
public void onFailure(Call<TestRequest> call, Throwable t) {
// 请求失败回调
Log.d(TAG,"失败");
}
});
}
}).start();
经过如上步骤就可以成功完成网络请求,获取到的数据打印如下:
成功=success---200---10---1-----[{id=1983.0, type_id=81.0, type_name=民族菜, cp_name=西红柿炒鸡蛋, zuofa=1.把西红柿洗净,去蒂,切成象眼块;鸡蛋打入碗内,加入精盐,少许搅匀,用热油炒散。2.将炒锅放入油,烧热后放入西红柿、鸡蛋,搅均匀加入白糖、精盐、再搅炒几下,开后勾芡即成。, texing=红黄相间,味道鲜美。, tishi=, tiaoliao=, yuanliao=西红柿500克,鸡蛋2个,植物油50克,白糖25克,精盐5克,水淀粉15克。}]
如果我们要提交的数据有对象类型,我们可以这么写
ApiService apiService = retrofit.create(ApiService.class);
Call<TestRequest> call = apiService.login("www.baidu.com", new Payload("123","test","test","test"));
其中 Payload 其实就是bean,然后ApiService.java可以这么写
public interface ApiService {
// 请求方式 + 请求地址
@POST("www.baidu.com")
// 方法参数
Call<TestRequest> login(@Query("url") String url, @Query("payload") Payload payload);
}
那么对应的 TestRequest.java就应该如下:
public class TestRequest {
String url;
Payload payload;
}
Demo下载:
链接:https://pan.baidu.com/s/1Dfah0_QbUnLM4SHtmE0O-g
提取码:5dct