OkHttp Websockets - 连接到 websocket 时添加一个主体
Posted
技术标签:
【中文标题】OkHttp Websockets - 连接到 websocket 时添加一个主体【英文标题】:OkHttp Websockets - Add a body when connecting to websocket 【发布时间】:2020-02-11 08:01:14 【问题描述】:我正在使用 okHttp websocket 库,并且成功连接到我的 websocket 服务器,但目前我只能在连接时获取连接 ID。我想在正文中发送一些额外的信息,但我不知道如何使用 okHttp 添加它
Request request = new Request.Builder()
.url("wss://mywebsocketurl.com")
.build();
我试过了
RequestBody requestBody = new FormBody.Builder()
.add("camera_id", "e9502c54-927c-4639-a94f-8d03149c9c62")
.build();
Request request = new Request.Builder()
.url("wss://mywebsocketurl.com")
.method("POST", requestBody)
.build();
Request request = new Request.Builder()
.url("wss://mywebsocketurl.com")
.post(requestBody)
.build();
但它总是返回
java.lang.IllegalArgumentException: method GET must not have a request body.
【问题讨论】:
【参考方案1】:我知道现在回答为时已晚。 无论如何,该网址应该只是 GET。所以我建立了连接并在 onOpen 回调函数上发送了正文。它奏效了。
private fun initializeSocket(url: String)
val request: Request = Request.Builder().url(url).build()
val listener = WebSocketListener()
webSocket = client!!.newWebSocket(request, listener)
client?.dispatcher()?.executorService()?.shutdown()
private class WebSocketListener : WebSocketListener()
override fun onOpen(webSocket: WebSocket, response: Response?)
val content = "\n" +
" \"messageType\": \"INIT_CONNECTION\"\n" +
""
webSocket.send(content)
...
【讨论】:
以上是关于OkHttp Websockets - 连接到 websocket 时添加一个主体的主要内容,如果未能解决你的问题,请参考以下文章
OKHttp Android没有通过http2 alpn连接到nginx
连接到 websockets NodeJS Express 服务器时出错