首页 > 其他分享 >android使用okhttp3连接springboot

android使用okhttp3连接springboot

时间:2024-03-12 22:12:44浏览次数:26  
标签:springboot 通信 okhttp3 明文 user HTTPS new android

首先在build.gradle.kts中导入依赖

在dependencies{}中添加以下代码

implementation("com.squareup.okhttp3:okhttp:4.9.1")

之后在MainActivity中加入以下代码

private OkHttpClient client = new OkHttpClient();
    private void sendPostRequest(User user) {
        // 构造 JSON 格式的请求体
        MediaType JSON = MediaType.parse("application/json; charset=utf-8");
        String json = "{\"name\":\"" + user.getName() + "\","
                + "\"teacher\":\"" + user.getTeacher() + "\","
                + "\"place\":\"" + user.getPlace() + "\""
                + "}";
        RequestBody body = RequestBody.create(json, JSON);

        // 构造 POST 请求
        Request request = new Request.Builder()
                .url("http://192.168.192.191:8080/user") // 替换为你的后端接口地址
                .post(body)
                .build();

        // 发送请求并处理响应
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
                // 处理请求失败情况
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (!response.isSuccessful()) {
                    throw new IOException("Unexpected code " + response);
                }
                Log.e("TAG", "onResponse: 连接成功" );
                // 处理请求成功情况
                String responseData = response.body().string();
                // 在这里处理服务器返回的数据
            }
        });
    }

然后直接调用这个sendPostRequest(User user)就能将信息发送到后端了..............................当然不行啦

这时候会报错,错误表明你的应用程序尝试通过明文文本(CLEARTEXT)通信与一个 IP 地址为 192.168.192.191(我的ipv4地址) 的服务器进行通信,但是在当前的网络安全策略下,这种明文通信是被禁止的。

为了解决这个问题,你可以采取以下步骤之一:

 

    • 使用 HTTPS 进行通信: 建议你在应用程序中使用 HTTPS 加密协议来加密通信,而不是使用明文文本。这样可以保护通信的安全性。请确保你的后端服务器支持 HTTPS,并且在应用程序中将 URL 改为 HTTPS 格式。

    • 允许明文通信(不推荐): 如果你的后端服务器仍然在使用明文 HTTP 协议,并且你希望继续允许明文通信,你可以在 AndroidManifest.xml 文件中添加一个 <application> 标签,并在其中添加 android:usesCleartextTraffic="true" 属性。但是请注意,这样做会降低通信的安全性,不推荐在生产环境中使用。

 

我还不会让我的后端服务器支持 HTTPS,于是我选择第二种,在 AndroidManifest.xml 文件中添加一个 <application> 标签,并在其中添加 android:usesCleartextTraffic="true" 属性,就像这样:

 使用网络权限要记得在追加一行

<uses-permission android:name="android.permission.INTERNET" /> 如上图. 这样我们就可以在MainActivity中使用sendPostRequest(User user)方法来向springboot发送post请求了

标签:springboot,通信,okhttp3,明文,user,HTTPS,new,android
From: https://www.cnblogs.com/daniel350-wang/p/18069450

相关文章

  • springboot232青年公寓服务平台
    大学本科毕业论文(设计)青年公寓服务平台的设计与实现       学院(系):   信息科学与技术学院             专      业:                                  学      号:           ......
  • Java项目源码基于springboot的家政服务平台的设计与实现
    大家好我是程序员阿存,在java圈的辛苦码农。辛辛苦苦板砖,今天要和大家聊的是一款Java项目源码基于springboot的家政服务平台的设计与实现,项目源码以及部署相关请联系存哥,文末附上联系信息。项目源码:Java基于springboot的家政服务平台的设计与实现.rar资源-CSDN文库项目简介:......
  • java毕业设计五邑大学超市网上销售软件设计(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经成为现代商业活动中不可或缺的一部分。特别是网上超市销售业务,它借助网络平台突破了传统购物的时间和空间限制,为消......
  • SpringBoot(容器功能)
    文章目录1.@Configuration添加/注入bean1.注入bean1.编写一个JavaBean,Monster.java2.创建一个config文件夹(名字任意),用于存放配置Bean的类(相当于配置文件)3.BeanConfig.java4.测试使用MainApp.java2.结果展示2.细节说明1.@Configuration的proxyBeanMethods属性2.可以有......
  • 【Springboot】--如何将springboot+vue项目部署到云服务器?
    目录一、准备工作1、购买云服务器2、获取面板地址二、jdk和数据库1、安装环境 2、配置jdk环境变量3、java版本的问题4、添加数据库三、前端部署 1、vue2、创建站点​编辑四、后端部署1、application.yml2、idea打包3、运行jar包4、开放端口五、可能遇到的......
  • 关于android stdio连接mysql数据库出现过的问题
    根据网上的资料连接mysql数据库的步骤有:1.导入mysql连接jar包我的androidstdio文件里没有libs文件夹,就在build创建了一个,选择jar包,aslibrary,重启下进程,就会生成一些文件2.在mainfest.xml文件下加入网络权限<uses-permissionandroid:name="android.permission.INTERNET"/>......
  • ADB 下载、安装及使用教程:让你更好地管理 Android 设备
    简介作为一名测试工程师,我们经常需要在我们的Android设备上进行调试、管理或者定制。而Android调试桥(ADB)是Google官方提供的工具,可以帮助我们在计算机上与Android设备进行通信和控制。本教程将带领你一步步学习如何下载、安装和使用ADB,让你更好地管理你的Android设备......
  • Android RecyclerView的使用(以实现一个简单的动态聊天界面为例)
    RecycleView可以实现动态列表的功能,毕竟在实际开发中大多数情况下不可能提前知道一个列表要塞进去多少东西。比如说QQ微信的聊天栏界面,可以抽象成一个RecycleView(或者一个ListView),没人说话时列表为空,你发一句话我发一句话,这列表就长起来了。再或者像是一些管理系统里,每一个物品......
  • Android 发布aar远程依赖出现扩展方法无法找到问题
    原文:Android发布aar远程依赖出现扩展方法无法找到问题-Stars-One的杂货小窝起因最近在整合自己的工具类库,偶然发现之前写的扩展方法使用远程依赖却是提示找不到但我有个aar库却是正常的,于是看了下这两者的区别,发现是build.gradle多了下面这个导致的问题packagingOptio......
  • springboot-02理解 自动配置原理
    在进行springboot的多环境配置:可以选择激活那一共配置文件在properties下使用spring.profiles.active=.dev.test等在yaml下可以使用-------来进行分割环境配置测试环境server:port:8082spring:Profiles:dev/test;active:只需通过选择不同调用的环境参数进行声明即可......