安卓与服务器交互主要依赖以下协议:
协议类型 | 特点 |
---|---|
HTTP/HTTPS | 基于请求-响应模式,支持RESTful API,兼容所有网络环境 |
WebSocket | 全双工通信,支持长连接,适合实时数据推送 |
MQTT | 轻量级消息协议,专为物联网设计,适合低带宽/高延迟环境 |
CoAP | 专为受限设备设计的协议,适用于物联网设备间通信 |
gRPC | 高性能RPC框架,基于HTTP/2,支持多语言,适合微服务架构 |
特性 | HTTP/HTTPS | WebSocket | MQTT | gRPC |
---|---|---|---|---|
连接方式 | 短连接(每次新建立) | 长连接(持久化) | 长连接/短连接均可 | 长连接(HTTP/2) |
数据流向 | 单向(请求→响应) | 双向(全双工) | 发布/订阅模式 | 双向流控 |
头部开销 | 较大(完整HTTP头) | 极小(帧结构) | 极小(固定头) | 较小(protobuf) |
实时性 | 低(需重复建立连接) | 高(毫秒级延迟) | 中等(QoS机制) | 高(多路复用) |
// 使用OkHttp发起GET请求 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://api.example.com/data") .build(); client.newCall(request).enqueue(new Callback(){ @Override public void onResponse(Call call, Response response) { // 处理响应 } @Override public void onFailure(Call call, IOException e) { // 处理错误 } });
// 使用OkHttp WebSocket OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("wss://socket.example.com/") .build(); WebSocketListener listener = new WebSocketListener(){ @Override public void onOpen(WebSocket webSocket, Response response) { webSocket.send("Hello Server"); } @Override public void onMessage(WebSocket webSocket, String text) { // 处理消息 } }; WebSocket ws = client.newWebSocket(request, listener);
// 使用Paho MQTT客户端 MqttClient client = new MqttClient("tcp://broker.example.com:1883", MqttClient.generateClientId()); client.connect(); client.subscribe("device/status", (topic, msg) -> { String payload = new String(msg.getPayload()); // 处理消息 });
安全层 | 实现方案 |
---|---|
传输加密 | HTTPS(SSL/TLS)、WSS(WebSocket加密)、MQTT over TLS |
身份认证 | OAuth2.0、JWT、API Key、双向证书认证 |
数据完整性 | HMAC签名、消息摘要(SHA-256)、TLS内置校验 |
防重放攻击 | 时间戳+随机数、递增序列号、Nonce值 |
权限控制 | IP白名单、API访问频率限制、RBAC权限模型 |
A1:
A2: