3 java android websocket android-webservice
我正在尝试使用org.java_websocket.client.WebSocketClient API在android中连接安全websocket连接wss://,但无法与https连接.但是它与ws://一起工作正常.这是我的代码.
private void connect(String websocketEndPointUrl) throws Exception {
URI uri;
try {
websocketEndPointUrl="wss://echo.websocket.org:443";
Log.i(TAG, " WSURL: " + websocketEndPointUrl);
uri = new URI(websocketEndPointUrl);
} catch (URISyntaxException e) {
Log.e(TAG, e.getMessage());
return;
}
mWebSocketClient = new WebSocketClient(uri,new Draft_17()) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
Log.i("Websocket", "Opened");
}
@Override
public void onMessage(String s) {
//final String message =s;
}
@Override
public void onClose(int i, String s, boolean b) {
Log.i("Websocket", "Closed " + s);
}
@Override
public void onError(Exception e) {
Log.i("Websocket", "Error " + e.getMessage());
}
};
mWebSocketClient.connect();
}
Run Code Online (Sandbox Code Playgroud)
我正在使用在线测试websocket url:ws://echo.websocket.org(端口80)//使用wss://echo.websocket.org(端口443)根据我的观察,不需要证书在我的代码中.任何人都可以建议我是什么原因以及我如何解决这个问题.
小智 5
找到解决方案.我不知道为什么这不是文档的一部分.您只需要在WebSocketClient初始化之后和方法之前设置setWebSocketFactory.connect()
mWebSocketClient = new WebSocketClient(uri,new Draft_17())
{
@Override
public void onOpen(ServerHandshake serverHandshake) {
Log.i("Websocket", "Opened");
}
@Override
public void onMessage(String s) {
//final String message =s;
}
@Override
public void onClose(int i, String s, boolean b) {
Log.i("Websocket", "Closed " + s);
}
@Override
public void onError(Exception e) {
Log.i("Websocket", "Error " + e.getMessage());
}
};
if (websocketEndPointUrl.indexOf("wss") == 0)
{
try {
SSLContext sslContext = SSLContext.getDefault();
mWebSocketClient.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sslContext));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
mWebSocketClient.connect();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |