当前位置: 首页 > article >正文

安卓基础(Okhttp3)

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() {
            @Override
            public void onFailure(Call call, IOException e) {
                System.out.println("请求失败: " + e.getMessage()); // 请求失败
            }

            @Override
            public 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. 创建 RequestBody
        RequestBody 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() {
            @Override
            public void onFailure(Call call, IOException e) {
                System.out.println("请求失败: " + e.getMessage());
            }

            @Override
            public 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️⃣ 创建 OkHttpClient
        OkHttpClient client = new OkHttpClient();

        // 2️⃣ 创建 WebSocket 连接请求
        Request request = new Request.Builder()
                .url("wss://echo.websocket.org") // WebSocket 服务器地址
                .build();

        // 3️⃣ 创建 WebSocket 监听器
        WebSocketListener listener = new WebSocketListener() {
            @Override
            public void onOpen(WebSocket webSocket, Response response) {
                System.out.println("✅ WebSocket 连接成功");
                webSocket.send("Hello WebSocket!"); // 发送消息
            }

            @Override
            public void onMessage(WebSocket webSocket, String text) {
                System.out.println("📩 收到消息: " + text);
            }

            @Override
            public void onClosed(WebSocket webSocket, int code, String reason) {
                System.out.println("❌ WebSocket 连接关闭: " + reason);
            }

            @Override
            public 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.kler.cn/a/539946.html

相关文章:

  • IBM服务器刀箱Blade安装Hyper-V Server 2019 操作系统
  • 使用sunshine和moonlight串流时的音频输出问题
  • 【人工智能】Python中的序列到序列(Seq2Seq)模型:实现机器翻译
  • 智能化食品安全管理:AI视频监控在大型商场的技术方案
  • 树和二叉树_7
  • 2.8作业
  • ZooKeeper 技术全解:概念、功能、文件系统与主从同步
  • 【SQL技术】不同数据库引擎 SQL 优化方案剖析
  • 软件测试之通用功能测试点
  • Visual Basic语言的图形用户界面
  • 位运算算法篇:异或运算
  • webpack配置语言之---ts
  • 用DeepSeek写小程序指令技巧
  • doris:MySQL 兼容性
  • 【含开题报告+文档+PPT+源码】基于SpringBoot+Vue旅游管理网站
  • PromptSource官方文档翻译
  • 我准备做一个24H的摄像机模拟器,用录像视频模拟实时画面,如果能支持时间水印就更好了
  • user、assistant、system三大角色在大语言模型中的作用(通俗解释)
  • 荣耀已接入DeepSeek-R1,荣耀手机系统版本MagicOS8.0及以上用户可用
  • VSCode 下载与使用教程:附百度网盘地址
  • Word中Ctrl+V粘贴报错问题
  • 为什么代理了网络ip没有变化
  • chrome-base 如何实现一个BindOnce
  • 大语言模型prompt -Template
  • LIMO:上海交大的工作 “少即是多” LLM 推理
  • 【学术投稿】第五届计算机网络安全与软件工程(CNSSE 2025)