首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >https://websocket无法连接安卓

https://websocket无法连接安卓
EN

Stack Overflow用户
提问于 2016-09-27 15:39:56
回答 3查看 3.8K关注 0票数 4

我有连接套接字http://(with port)网址是完整的和工作,但我有连接https://(without port)不工作在Java-WebSocket。

我使用gradle依赖'org.java-websocket:Java-WebSocket:1.3.0‘

代码语言:javascript
复制
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);
    }
}
EN

回答 3

Stack Overflow用户

发布于 2016-10-12 18:12:34

我找到了一个解决方案!)如果要使用wss://,则应设置setWebSocketFactory..就像这样:

代码语言:javascript
复制
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();
}
票数 2
EN

Stack Overflow用户

发布于 2016-09-27 15:58:48

检查您的清单:

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET" >
 </uses-permission>

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >  
</uses-permission

请张贴日志猫!

票数 1
EN

Stack Overflow用户

发布于 2016-09-27 16:46:12

Websocket有自己的协议ws://wss://(类似于http://https://),尽量使用这些协议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39718846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档