首先在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