Retrofit2+Restful api的入门使用
16lz
2021-01-26
有阵子没临幸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 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 userCall = service.userInfo(getname.getText().toString()); userCall.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { Log.i("TAG",response.body().toString()); } @Override public void onFailure(Call call, Throwable t) { } }); //保存用户信息 User user=new User(); user.setAddress(address.getText().toString()); user.setName(name.getText().toString()); user.setSex(sex); Call save = service.save(user); save.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { } @Override public void onFailure(Call 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 userInfo(@Path("name") String name);
使用了实体类接收,所以一定要加上转实体依赖:
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
Retrofit链中加上即可
.addConverterFactory(GsonConverterFactory.create())
更多相关文章
- Android获取系统时间以及网络时间
- android开发学习笔记(一)分别通过GET和POST请求从服务器端获取数
- android http3 下篇
- android 实现listView异步加载图片
- Android开发学习之电话、短信、联系人
- Android调用系统图库获取图片
- 高德地图-根据经纬度获取地址(逆地理编码)
- android getFragmentManager、getSupportFragmentManager、getCh
- Android开发入门之网络通信(网页源码查看器)