本章目录
一、登录验证获取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地址
- findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- String name = editText1.getText().toString();
- String password = editText2.getText().toString();
- Map<String,String> map = new HashMap<>();
- map.put("username",name);
- map.put("password",password);
- Call<LoginResult> loginResultCall = RetrofitUtils.getRetrofit("http://192.168.55.79:8080/").create(Api.class).login(map); //地址换成自己的本机ip地址
- loginResultCall.enqueue(new Callback<LoginResult>() {
- @Override
- public void onResponse(Call<LoginResult> call, Response<LoginResult> response) {
- LoginResult loginResult = response.body();
- if (loginResult.code == 200){
- Toast.makeText(LoginActivity.this,"登录成功",Toast.LENGTH_LONG).show();
- SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
- editor.putString("token",loginResult.token);
- editor.apply();
- Intent intent = new Intent(LoginActivity.this,MainActivity.class);
- startActivity(intent);
- // finish();
- }else {
- Toast.makeText(LoginActivity.this,loginResult.msg,Toast.LENGTH_LONG).show();
- }
- }
- @Override
- public void onFailure(Call<LoginResult> call, Throwable t) {
- }
- });
复制代码 ④运行测试
运行模拟机,假如在日记中能获取到请求数据,且成功跳转到MainActivity,则操作成功
二、网络请求实现
在登录验证获取到token值后,我们接下来可以来请求网络数据了。
1、创建实体类
先将上一步获取到的token值复制一下,然后到后端Apifox中选择你必要请求的数据接口,输入Header信息。
参数名为Authorization,参数值为Bearer加一个空格再加上你获取的token值。
假如操作无误的话点击发送即可获取到JSON数据。
然后同样的操作将获取到的JSON数据gsonformat到安卓端天生实体类即可。
2、Api接口方法
在之前的Api里继承操作:
3、实现数据请求并展示到页面
这里我们以banner请求图片为例:
- Banner banner = view.findViewById(R.id.banner);
- List<Poster.RowsBean> list = new ArrayList<>();
- SharedPreferences sharedPreferences = getActivity().getSharedPreferences("data", Context.MODE_PRIVATE);
- String token = sharedPreferences.getString("token","");
- retrofit2.Call<Poster> posterCall = RetrofitUtils.getRetrofit("http://192.168.55.79:8080/").create(Api.class).posterList("Bearer " + token);
- posterCall.enqueue(new retrofit2.Callback<Poster>() {
- @Override
- public void onResponse(retrofit2.Call<Poster> call, retrofit2.Response<Poster> response) {
- Poster posterResult = response.body();
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if (posterResult != null){
- list.addAll(posterResult.rows);
- banner.setAdapter(new BannerImageAdapter<Poster.RowsBean>(list) {
- @Override
- public void onBindView(BannerImageHolder holder, Poster.RowsBean data, int position, int size) {
- //Glide 加载网络地址 ->添加网络请求权限
- Glide.with(holder.itemView)
- .load(data.src)
- .into(holder.imageView);
- }
- });
- }
- }
- });
- }
- @Override
- public void onFailure(retrofit2.Call<Poster> call, Throwable t) {
- }
- });
- banner.setIndicator(new CircleIndicator(getActivity()));
- banner.setIndicatorRadius(100);
复制代码 将地址改为自己的本机ip地址即可。
这样就能获取到图片地址并设置给banner了,我的实现结果如下:

你也可以在这个代码的基础上进一步完满功能,比方请求网络数据时未获取到token值自动返回登录页面要求用户登录等等,留给各人自己思考!
版权全部,转载请联系作者
©2024Kevin
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |