Retrofit2+Restful api的入门使用

有阵子没临幸Android了,打算熟悉熟悉Andorid,故有了本次对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 自建表成功

     

     

启动测试

保存:

 

 

查询数据库

 

 

获取用户:

控制台打印获取用户信息

 

 

中途遇到的问题:

  1. 客户端报错
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()) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值