Android---SpringBoot实现前后端数据交互

Android—SpringBoot实现前后端数据交互

General 1920x1080 Venice boat city canal Italy

星光不问赶路人,时间不负有心人

这篇是针对android传数据到后台springboot,使用Xutils框架

使用Xutils框架 关于xutils的使用这是老师的博客大家可以看看

前端后端数据交互方式

前端后端数据提交格式

img

SpringBoot获取参数的几种常用注解

@PathVariable:一般我们使用URI template样式映射使用,即url/{param}这种形式,也就是一般我们使用的GET,DELETE,PUT方法会使用到的,我们可以获取URL后所跟的参数。

@RequestParam:一般我们使用该注解来获取多个参数,在()内写入需要获取参数的参数名即可,一般在PUT,POST中比较常用。

@RequestBody:该注解和@RequestParam殊途同归,我们使用该注解将所有参数转换,在代码部分在一个个取出来,也是目前我使用到最多的注解来获取参数

get请求

params传参一般用于get请求,params传参时参数会附于uri后面以问号形式展示,比如

http://localhost/login?username=xiaoming&password=123456

这种就是get请求常见格式,在地址栏输入http://localhost/login,然后选params再输入key和value,然后问号形式展现的参数就会被自动加到地址最后。

一般用于查询数据,采用明文进行传输,一般用来获取一些无关用户信息的数据,

@GetMapping 组合注解,是 @RequestMapping(method = RequestMethod.GET) 的缩写

  1. get请求,url路径传参
    get请求一般通过url传参,如:
    http://10.138.164.148:9000/get/21
    后端要获取name参数,可以使用@RequestParam注解
    后端使用@PathVariable可以接收路径参数21。

Android代码:

RequestParams requestParams = new RequestParams("http://10.138.164.148:9000/get/21");
requestParams.addQueryStringParameter("name","suke");

image-20211215183718245

SpringBoot代码:

 @GetMapping("/get/{id}")
    public void getTest(@PathVariable (name = "id") int id, @RequestParam (name = "name") String pname){
        System.out.println("id = " + id);
        System.out.println("pname = " + pname);
    }

image-20211215183740066

当请求为get请求时,使用@PathVariable或者@RequestParam获取参数值,获取路径参数。@PathVariable一般用于获取获取*url/{id}这种形式的参数;@RequestParam获取查询参数。即url?name=*这种形式

post请求

body传参一般用于post请求,body传参时需要在body里写json数组,参数不会显示在地址栏中
ps:post请求一般用来传登录时的账号密码,以json数组的形式传给后台

image-20211214151616194

后台实体对象接收

较推荐使用json格式传值

Android代码:

RequestParams requestParams = new RequestParams("http://10.138.164.148:9000/post");
        Student qifei = new Student(44, "qifei", 20);
        Gson gson = new Gson();
        String jsonStudent = gson.toJson(qifei);
        requestParams.setAsJsonContent(true);  //  设置传输格式为json
        requestParams.setBodyContent(jsonStudent);

image-20211215185345874

SpringBoot代码:

@PostMapping("/post")
    public String postTest(@RequestBody Student student){
        System.out.println(student.toString()+"========");
        return student.toString();
    }

image-20211215185557548

key-value接收

Android代码:

RequestParams requestParams = new RequestParams("http://10.138.164.148:9000/postq");
        requestParams.addBodyParameter("name","qifei");
        requestParams.addBodyParameter("age","18");

image-20211215192721400

SpringBoot代码:

 @PostMapping("/postq")
    public void postTest1(@RequestParam (name = "name") String pname , @RequestParam (name = "age") String age){
        System.out.println("pname = " + pname);
        System.out.println("age = " + age);
        return ;
    }

image-20211215192812269

map接收

Android代码:

/*
        post请求 ==> map接受 */
        RequestParams requestParams = new RequestParams("http://10.138.164.148:9000/post3");   //json对象传值
        Student qifei = new Student(44, "qifei", 20);
        Gson gson = new Gson();
        String jsonStudent = gson.toJson(qifei);
        requestParams.setAsJsonContent(true);
        requestParams.setBodyContent(jsonStudent);

image-20211215193130183

SpringBoot代码:

@PostMapping("/post3")
    public String postTest3(@RequestBody Map<String,String> mp){
        System.out.println(mp.get("name") + mp.get("age"));
        return mp.get("name")+mp.get("age");
    }

image-20211215193251618

使用 OkHttp 库实现 AndroidSpring Boot前后端交互可以分为以下步骤: 1. 添加 OkHttp 库依赖 在 Android 项目的 build.gradle 文件中添加 OkHttp 库的依赖: ``` dependencies { implementation 'com.squareup.okhttp3:okhttp:4.9.0' } ``` 2. 在 Android 中发送请求 在 Android 中使用 OkHttp 发送请求的代码如下: ``` OkHttpClient client = new OkHttpClient(); String url = "http://localhost:8080/api/user"; // Spring Boot 后端接口地址 Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { String responseData = response.body().string(); // 处理响应数据 } catch (IOException e) { e.printStackTrace(); } ``` 以上代码中,我们创建了一个 OkHttpClient 对象,并指定了 Spring Boot 接口的地址和请求方式,然后使用 client.newCall(request).execute() 发送请求并获取响应数据。 3. 在 Spring Boot 中接收请求 在 Spring Boot 中,我们需要编写接口来接收 Android 发送的请求。示例代码如下: ``` @RestController @RequestMapping("/api") public class UserController { @GetMapping("/user") public User getUser() { // 业务处理 return new User(); } } ``` 以上代码中,我们使用 @RestController 和 @RequestMapping 注解来定义一个接口,然后在接口中处理业务逻辑,最后返回一个 User 对象。 4. 在 Android 中处理响应数据 在 Android 中,我们可以在 try 代码块中通过 response.body().string() 获取到响应数据,然后对数据进行处理。例如,我们可以将响应数据解析成 JSON 格式并显示在界面上: ``` try (Response response = client.newCall(request).execute()) { String responseData = response.body().string(); JSONObject jsonObject = new JSONObject(responseData); String username = jsonObject.getString("username"); String email = jsonObject.getString("email"); // 将数据显示在界面上 } catch (IOException | JSONException e) { e.printStackTrace(); } ``` 以上代码中,我们使用 JSONObject 类将响应数据解析成 JSON 格式,并从中获取到 username 和 email 的值,最后将这些值显示在界面上。 至此,我们就完成了 AndroidSpring Boot前后端交互
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liknana

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值