Retrofit2+Restful api的入门使用

有阵子没临幸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);
  • 页面

     

    Retrofit2+Restful api的入门使用_第1张图片

     

  • 保存和获取用户信息核心代码

           //创建实例
            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 自建表成功

     

    Retrofit2+Restful api的入门使用_第2张图片

     

启动测试

保存:

 

Retrofit2+Restful api的入门使用_第3张图片

 

查询数据库

 

 

获取用户:

控制台打印获取用户信息

 

 

中途遇到的问题:

  1. 客户端报错
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,Java)