Android Studio项目如何请求Ruoyi后端数据

打印 上一主题 下一主题

主题 978|帖子 978|积分 2934

本章目录
一、登录验证获取token信息
1、取消Ruoyi验证码验证
①首先找到SysLoginController文件
②Ctrl+鼠标左键点击login方法进入Service文件
③把验证码校验这一行的代码解释掉即可
④请求验证
2、安卓端登录请求
①将上一步获取到的JSON数据添加到实体类
②在Api里界说请求方法
③登录功能实现
④运行测试
二、网络请求实现
1、创建实体类
2、Api接口方法
3、实现数据请求并展示到页面

 
一、登录验证获取token信息

要从Ruoyi请求数据必要通过验证,直接请求是获取不到数据的,因此我们必要首先通过登录验证来获取一个token值。
1、取消Ruoyi验证码验证

在Ruoyi端登录验证时他自动给我们配备了验证码验证登录的功能,但是在安卓端获取验证码的操作比力复杂,因此我们可以先把Ruoyi端的验证操作解释掉。
①首先找到SysLoginController文件


②Ctrl+鼠标左键点击login方法进入Service文件


③把验证码校验这一行的代码解释掉即可


④请求验证

使用Apifox手动输入用户名和密码看可否请求成功
留意Body只必要保留username和password

请求成功后返回的数据中的token就是我们必要的值
留意:假如这里表现URL无效,可能是请求地址中的login前存在两个“/”导致,删去一个即可!
 
2、安卓端登录请求

①将上一步获取到的JSON数据添加到实体类

这里复制JSON数据然后gaonformat就行了

 
②在Api里界说请求方法


 
③登录功能实现

这里的地址请换成自己的本机ip地址
  1. findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
  2.             @Override
  3.             public void onClick(View v) {
  4.                 String name = editText1.getText().toString();
  5.                 String password = editText2.getText().toString();
  6.                 Map<String,String> map = new HashMap<>();
  7.                 map.put("username",name);
  8.                 map.put("password",password);
  9.                 Call<LoginResult> loginResultCall = RetrofitUtils.getRetrofit("http://192.168.55.79:8080/").create(Api.class).login(map); //地址换成自己的本机ip地址
  10.                 loginResultCall.enqueue(new Callback<LoginResult>() {
  11.                     @Override
  12.                     public void onResponse(Call<LoginResult> call, Response<LoginResult> response) {
  13.                         LoginResult loginResult = response.body();
  14.                         if (loginResult.code == 200){
  15.                             Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_LONG).show();
  16.                             SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
  17.                             editor.putString("token",loginResult.token);
  18.                             editor.apply();
  19.                             Intent intent = new Intent(LoginActivity.this,MainActivity.class);
  20.                             startActivity(intent);
  21. //                            finish();
  22.                         }else {
  23.                             Toast.makeText(LoginActivity.this,loginResult.msg,Toast.LENGTH_LONG).show();
  24.                         }
  25.                     }
  26.                     @Override
  27.                     public void onFailure(Call<LoginResult> call, Throwable t) {
  28.                     }
  29.                 });
复制代码
④运行测试

运行模拟机,假如在日记中能获取到请求数据,且成功跳转到MainActivity,则操作成功

 
二、网络请求实现

在登录验证获取到token值后,我们接下来可以来请求网络数据了。
1、创建实体类

先将上一步获取到的token值复制一下,然后到后端Apifox中选择你必要请求的数据接口,输入Header信息。
参数名为Authorization,参数值为Bearer加一个空格再加上你获取的token值。
假如操作无误的话点击发送即可获取到JSON数据。

然后同样的操作将获取到的JSON数据gsonformat到安卓端天生实体类即可。
2、Api接口方法

在之前的Api里继承操作:

3、实现数据请求并展示到页面

这里我们以banner请求图片为例:
  1. Banner banner = view.findViewById(R.id.banner);
  2.         List<Poster.RowsBean> list = new ArrayList<>();
  3.         SharedPreferences sharedPreferences = getActivity().getSharedPreferences("data", Context.MODE_PRIVATE);
  4.         String token = sharedPreferences.getString("token","");
  5.         retrofit2.Call<Poster> posterCall = RetrofitUtils.getRetrofit("http://192.168.55.79:8080/").create(Api.class).posterList("Bearer " + token);
  6.         posterCall.enqueue(new retrofit2.Callback<Poster>() {
  7.             @Override
  8.             public void onResponse(retrofit2.Call<Poster> call, retrofit2.Response<Poster> response) {
  9.                 Poster posterResult = response.body();
  10.                 getActivity().runOnUiThread(new Runnable() {
  11.                     @Override
  12.                     public void run() {
  13.                         if (posterResult != null){
  14.                                 list.addAll(posterResult.rows);
  15.                                 banner.setAdapter(new BannerImageAdapter<Poster.RowsBean>(list) {
  16.                                     @Override
  17.                                     public void onBindView(BannerImageHolder holder, Poster.RowsBean data, int position, int size) {
  18.                                         //Glide 加载网络地址 ->添加网络请求权限
  19.                                         Glide.with(holder.itemView)
  20.                                                 .load(data.src)
  21.                                                 .into(holder.imageView);
  22.                                     }
  23.                                 });
  24.                             }
  25.                         }
  26.                 });
  27.             }
  28.             @Override
  29.             public void onFailure(retrofit2.Call<Poster> call, Throwable t) {
  30.             }
  31.         });
  32.         banner.setIndicator(new CircleIndicator(getActivity()));
  33.         banner.setIndicatorRadius(100);
复制代码
将地址改为自己的本机ip地址即可。
 
这样就能获取到图片地址并设置给banner了,我的实现结果如下:

你也可以在这个代码的基础上进一步完满功能,比方请求网络数据时未获取到token值自动返回登录页面要求用户登录等等,留给各人自己思考!
 
   
版权全部,转载请联系作者

  
©2024Kevin

   

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表