安卓基础(Okhttp3)

devtools/2025/2/11 7:15:10/

1️⃣ 添加 OkHttp 依赖

📌 app/build.gradle 添加 OkHttp 依赖

dependencies {implementation 'com.squareup.okhttp3:okhttp:4.9.3'
}

2️⃣ 发送 GET 请求

📌 发送一个 GET 请求

实例化okhttp客户端--->创建请求--->发送请求

import okhttp3.*;import java.io.IOException;public class OkHttpExample {public static void main(String[] args) {// 1. 创建 OkHttpClient(网络客户端)OkHttpClient client = new OkHttpClient();// 2. 构造请求(GET 请求)Request request = new Request.Builder().url("https://jsonplaceholder.typicode.com/todos/1") // 目标 URL.build();// 3. 发送请求(异步执行)client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {System.out.println("请求失败: " + e.getMessage()); // 请求失败}@Overridepublic void onResponse(Call call, Response response) throws IOException {String responseBody = response.body().string(); // 获取返回数据System.out.println("请求成功: " + responseBody); // 打印数据}});}
}

3️⃣ 发送 POST 请求

📌 使用 POST 发送 JSON 数据

实例化okhttp客户端--->创建json数据--->创建body(含有json数据)--->创建请求(含有body)--->发送请求

import okhttp3.*;
import org.json.JSONObject;import java.io.IOException;public class OkHttpPostExample {public static void main(String[] args) {OkHttpClient client = new OkHttpClient();// 1. 创建 JSON 数据JSONObject json = new JSONObject();json.put("title", "Hello OkHttp");json.put("body", "This is a test post");json.put("userId", 1);// 2. 创建 RequestBodyRequestBody requestBody = RequestBody.create(json.toString(),MediaType.parse("application/json; charset=utf-8"));// 3. 创建请求(POST 请求)Request request = new Request.Builder().url("https://jsonplaceholder.typicode.com/posts").post(requestBody).build();// 4. 发送请求(异步)client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {System.out.println("请求失败: " + e.getMessage());}@Overridepublic void onResponse(Call call, Response response) throws IOException {String responseBody = response.body().string();System.out.println("请求成功: " + responseBody);}});}
}

📌 实现 WebSocket 客户端(连接、发送消息、接收消息、关闭)

import okhttp3.*;public class WebSocketExample {public static void main(String[] args) {// 1️⃣ 创建 OkHttpClientOkHttpClient client = new OkHttpClient();// 2️⃣ 创建 WebSocket 连接请求Request request = new Request.Builder().url("wss://echo.websocket.org") // WebSocket 服务器地址.build();// 3️⃣ 创建 WebSocket 监听器WebSocketListener listener = new WebSocketListener() {@Overridepublic void onOpen(WebSocket webSocket, Response response) {System.out.println("✅ WebSocket 连接成功");webSocket.send("Hello WebSocket!"); // 发送消息}@Overridepublic void onMessage(WebSocket webSocket, String text) {System.out.println("📩 收到消息: " + text);}@Overridepublic void onClosed(WebSocket webSocket, int code, String reason) {System.out.println("❌ WebSocket 连接关闭: " + reason);}@Overridepublic void onFailure(WebSocket webSocket, Throwable t, Response response) {System.out.println("⚠️ WebSocket 连接失败: " + t.getMessage());}};// 4️⃣ 创建 WebSocket 连接WebSocket webSocket = client.newWebSocket(request, listener);// 5️⃣ 关闭 WebSocket 客户端(防止程序未终止)client.dispatcher().executorService().shutdown();}
}


http://www.ppmy.cn/devtools/157859.html

相关文章

C# 两种方案实现调用 DeepSeek API

目录 序 开发运行环境 访问API的一个通用方法 原生官网实现 申请 API key 调用实现 调用示例 腾讯云知识引擎原子调用 申请 API key 调用示例 小结 序 DeepSeek(深度求索) 最近可谓火爆的一塌糊涂,具体的介绍这里不再赘述&#x…

java打印出每个文件夹里的所有文件名

在 Java 中,若要打印出每个文件夹里的所有文件名,可以使用递归方法来遍历文件夹及其子文件夹。下面将分别介绍使用传统的 java.io 包和 Java 7 引入的 java.nio.file 包来实现该功能。 使用 java.io 包实现 import java.io.File;public class PrintFil…

全志T527 音频适配

移植tlv320aic3111音频驱动 1.第一步,修改dts设备树,在设备树中添加有关音频芯片的硬件资源。因为板子跟音频芯片采用的twin连接,tlv320aic31xx节点地址为18,在twi中添加如下信息 tlv320aic31xx: tlv320aic31xx@18 { #sound-dai-cells = <0>; …

【网络法医】Docker取证

【网络法医】Docker取证 1.docker变更记录取证2.docker镜像取证3.工具取证 1.docker变更记录取证 如果怀疑docker容器被破坏。例如如下wordpress容器&#xff1a; docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS …

Java项目: 基于SpringBoot+mybatis+maven+mysql实现的智能学习平台管理系(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismavenmysql实现的智能学习平台管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、…

2. 4 模块化JDK:JDK模块结构与核心模块

第3章&#xff1a;模块化JDK&#xff1a;JDK模块结构与核心模块 JDK 9 将自身拆分为一系列模块&#xff0c;彻底告别传统的“单一JAR&#xff08;如 rt.jar&#xff09;”模式。本章深入解析 JDK 的模块化架构、核心模块功能及开发者如何高效利用这些模块。 3.1 JDK 模块化设计…

【通俗易懂说模型】反向传播(附多元分类与Softmax函数)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

【多模态大模型】系列3:语义分割(LSeg、GroupViT)

目录 1 LSeg2 Group ViT 1 LSeg LANGUAGE-DRIVEN SEMANTIC SEGMENTATION LSeg是第一篇将CLIP应用于语义分割的论文。它的分割的效果拔群&#xff0c;容错能力也很高&#xff1a; 模型总览图跟CLIP很像&#xff1a; 对于图像链路&#xff1a;输入一张图片&#xff0c;进入分割…