use*_*049 5 ssl android websocket okhttp okhttp3
我曾尝试OkHttp3用于连接到安全的 websocket 服务器。使用 wss://echo.websocket.org 时它工作正常,没问题,但是当连接到正在进行的项目的生产服务器时,我无法正确连接到它。30-40 秒后onClosing调用WebSocketListener.
我怀疑这与 SSL/TLS 加密有关 wss. 有没有办法让 OkHttpClient 接受新证书?
这是我现在用来与 OkHttp3 建立 websocket 连接的代码。
WebSocket webSocket;
OkHttpClient client;
OkHttpClient.Builder builder = new OkHttpClient.Builder();
client = builder.build();
Request request = new Request.Builder()
.url(MainActivity.WS_URL)
.header("Auth-Token","secret-api-token-here")
.build();
Log.i("WebSockets", "Headers: " + request.headers().toString());
webSocket = client.newWebSocket(request, new WebSocketListener() {
private static final int NORMAL_CLOSURE_STATUS = 1000;
@Override
public void onOpen(WebSocket webSocket, Response response) {
webSocket.send("{Auth-Token:secret-api-token-here}");
Log.i("WebSockets", "Connection accepted!");
//webSocket.close(NORMAL_CLOSURE_STATUS, "Goodbye !");
}
@Override
public void onMessage(WebSocket webSocket, String text) {
Log.i("WebSockets", "Receiving : " + text);
}
@Override
public void onMessage(WebSocket webSocket, ByteString bytes) {
Log.i("WebSockets", "Receiving bytes : " + bytes.hex());
}
@Override
public void onClosing(WebSocket webSocket, int code, String reason) {
webSocket.close(NORMAL_CLOSURE_STATUS, null);
Log.i("WebSockets", "Closing : " + code + " / " + reason);
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) {
Log.i("WebSockets", "Error : " + t.getMessage());
}});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5519 次 |
| 最近记录: |