https://websocket 不连接安卓
Posted
技术标签:
【中文标题】https://websocket 不连接安卓【英文标题】:https://websocket not connect android 【发布时间】:2016-09-27 07:39:56 【问题描述】:我的连接套接字http://(with port)
url 已完成并且工作正常,但我的连接https://(without port)
在Java-WebSocket 中不工作。
我使用 gradle 依赖 'org.java-websocket:Java-WebSocket:1.3.0'
WebSocketClient mWebSocketClient = new WebSocketClient(uri)
@Override
public void onOpen(ServerHandshake serverHandshake)
Log.e(TAG, "Websocket: " + "Opened");
mWebSocketClient.send("Hello from " + Build.MANUFACTURER + " " + Build.MODEL);
@Override
public void connect()
super.connect();
//Log.e(TAG, "Websocket: " + "connect");
SharedPreference.storeValue(mContext, SharedPreference.WEB_SOCKET_STATUS, SharedPreference.WEB_SOCKET_CONNECT);
【问题讨论】:
可能你的 SSL 证书没有为你的 https url 签名。 简单来说,WebSocket库的实现有很多关于SSL的open issues。它的 SSL 实现可能在某些条件下有效,但您不应期望它总是有效。 【参考方案1】:我找到了解决方案!)如果你想使用 wss:// 你应该设置 setWebSocketFactory.. 就像这样:
public void connect()
final String url = "wss://echo.websocket.org";
URI uri=null;
try
uri = new URI(url);
catch (URISyntaxException e)
Log.e(TAG, e.getMessage());
return;
mWebSocketClient = new WebSocketClient(uri)
@Override
public void onOpen(ServerHandshake handshakedata)
Log.e(TAG,"Connected!");
@Override
public void onMessage(String message)
Log.e(TAG,"Message: "+message);
@Override
public void onClose(int code, String reason, boolean remote)
Log.e(TAG,"Disconnected!");
@Override
public void onError(Exception ex)
Log.e(TAG,"Error: "+ex.getMessage());
;
if (url.indexOf("wss") == 0)
try
SSLContext sslContext = SSLContext.getDefault();
mWebSocketClient.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sslContext));
catch (Exception e)
e.printStackTrace();
mWebSocketClient.connect();
【讨论】:
文件应该如何看起来像“network-security-config”文件并经过认证?需要建立连接 不需要。我在没有任何“network-security-config”文件的情况下使用它。【参考方案2】:检查您的清单:
<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission
请发布日志猫!
【讨论】:
我已经添加了这两个权限 log cat :unkonow scheme https 检查我的答案@Priyanka 你的答案在哪里...请你提供解决方案的链接【参考方案3】:Websocket 有自己的协议ws://
或wss://
(类似于http://
、https://
),尽量使用这些协议。
【讨论】:
我也尝试过这种方法,但我得到异常 malformedurlexception unknown protocol wss 你的 websocket 服务器正在运行吗? websocket.org/echo.html 此链接用于在线工作 https 到 wss 但如何集成到我的项目 url 中。我也尝试在我的项目中将 https 替换为 wss 但 url 不起作用并抛出异常 malformedurlexception 未知协议 wss 尝试使用这个网址 wss://echo.websocket.org以上是关于https://websocket 不连接安卓的主要内容,如果未能解决你的问题,请参考以下文章