安卓基础(Okhttp3)

1️⃣ 添加 OkHttp 依赖

📌 app/build.gradle 添加 OkHttp 依赖

java 复制代码
dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.9.3'
}

2️⃣ 发送 GET 请求

📌 发送一个 GET 请求

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

java 复制代码
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)--->发送请求

java 复制代码
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 客户端(连接、发送消息、接收消息、关闭)

java 复制代码
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();
    }
}
相关推荐
郑州光合科技余经理1 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
andyweike6 小时前
Android Automotive
android
又见情义6 小时前
记一次 RK3568 Android 13 蓝牙反复重启问题的排查与修复
android
hai_android7 小时前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
敲代码的瓦龙8 小时前
Jetpack?ViewModel!!!
android·开发语言·kotlin·android-studio
Godikov9 小时前
Android 工控终端实战:从秒级卡顿到毫秒响应,SQLite/LitePal 性能优化全记录
android
星间都市山脉11 小时前
Android16 SystemService.onBootPhase 调用时机
android·java·linux·windows·ubuntu
swithun11 小时前
不用 WebView,我用 Kotlin + Compose Multiplatform 重写 Mermaid,并做了 2048 组对拍
android·开源·kotlin
AI吃大瓜11 小时前
人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测)
android·yolo·人脸检测·人体检测·行人检测·yolo26
与海boy11 小时前
Prompt模版
android·prompt