协议:
常见的 URL 协议规范(Scheme)对照表:
协议(Scheme) | 说明 |
---|---|
http:// |
非加密的网页请求(80端口) |
https:// |
加密的网页请求,使用 TLS(443端口) |
ws:// |
非加密的 WebSocket 请求(80端口) |
wss:// |
加密的 WebSocket 请求(443端口) |
ftp:// |
文件传输协议(FTP) |
file:// |
本地文件路径 |
mailto: |
打开邮件客户端 |
tel: |
拨打电话(通常在手机上) |
okhttp进行网络请求
✅ 一、引入依赖
implementation("com.squareup.okhttp3:okhttp:4.12.0")
✅ 二、定义 WebSocket 监听器
import okhttp3.Response
import okhttp3.WebSocket
import okhttp3.WebSocketListener
import okio.ByteString
import android.util.Log
class MyWebSocketListener : WebSocketListener() {
override fun onOpen(webSocket: WebSocket, response: Response) {
Log.d("WebSocket", "连接成功")
webSocket.send("Hello Server")
}
override fun onMessage(webSocket: WebSocket, text: String) {
Log.d("WebSocket", "收到文本消息: $text")
}
override fun onMessage(webSocket: WebSocket, bytes: ByteString) {
Log.d("WebSocket", "收到字节消息: ${bytes.hex()}")
}
override fun onClosing(webSocket: WebSocket, code: Int, reason: String) {
Log.d("WebSocket", "连接关闭中: $code / $reason")
webSocket.close(1000, null)
}
override fun onClosed(webSocket: WebSocket, code: Int, reason: String) {
Log.d("WebSocket", "连接已关闭: $code / $reason")
}
override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
Log.e("WebSocket", "连接失败", t)
}
}
✅ 三、创建并连接 WebSocket
import okhttp3.OkHttpClient
import okhttp3.Request
fun startWebSocket() {
val client = OkHttpClient()
val request = Request.Builder()
.url("wss://echo.websocket.org") // 替换成你自己的 WebSocket 服务地址
.build()
val listener = MyWebSocketListener()
val webSocket = client.newWebSocket(request, listener)
// 可选:关闭客户端时关闭WebSocket连接
// client.dispatcher.executorService.shutdown()
}
✅ 四、注意事项
URL 要使用
ws://
或wss://
,分别表示不加密与加密的 WebSocket。WebSocket 是异步的,不需要你自己处理线程。
OkHttp 会自动管理连接池和线程,但如果不再使用记得关闭它们。