有阵子没临幸Android了,打算熟悉熟悉Andorid,故有了本次对Retrofit2入门练习,记录之。
场景
- 保存以及获取用户信息
客户端
- 添加retrofit2依赖
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
- 新建User实体
private String name;
private String code;
private String sex;`
private String address;
- 新建获取用户的service 接口:
@GET("Info/{name}")
Call<User> userInfo(@Path("name") String name);
-
页面
-
保存和获取用户信息核心代码
//创建实例
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://10.0.4.52:8080/User/")
.addConverterFactory(GsonConverterFactory.create());
.build();
service = retrofit.create(UserService.class);
//获取用户信息
Call<User> userCall = service.userInfo(getname.getText().toString());
userCall.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
Log.i("TAG",response.body().toString());
}
@Override
public void onFailure(Call<User> call, Throwable t) {
}
});
//保存用户信息
User user=new User();
user.setAddress(address.getText().toString());
user.setName(name.getText().toString());
user.setSex(sex);
Call<User> save = service.save(user);
save.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
}
@Override
public void onFailure(Call<User> call, Throwable t) {
}
});
后端
- 获取和保存用户信息Controller部分代码
@RestController
@RequestMapping("/User/")
public class UserController {
@Autowired
private UserDao userDao;
/***
* 根据用户名获取用户信息
* @param name
* @return
*/
@GetMapping("/Info/{name}")
public User getUserInfo(@PathVariable("name") String name) {
return userDao.findUserByName(name);
}
/***
* b保存用户
* @param user
* @return
*/
@PostMapping("/Save")
public User save(@RequestBody User user){
Date date=new Date();
user.setCode(date.getTime()+user.getName());
userDao.save(user);
return user;
}
}
-
数据库是mysql数据库 并且已经springboot 自建表成功
启动测试
保存:
查询数据库
获取用户:
控制台打印获取用户信息
中途遇到的问题:
- 客户端报错
Could not locate ResponseBody xxx Tried: * retrofit.BuiltInConverters
因为service中:
Call<User> userInfo(@Path("name") String name);
使用了实体类接收,所以一定要加上转实体依赖:
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
Retrofit链中加上即可
.addConverterFactory(GsonConverterFactory.create())