2016-09-27 10 views
1

ich habe anschlussbuchse http://(with port) url ist komplett und funktioniert aber ich habe verbinden https://(without port) funktioniert nicht in Java-WebSocket.https: // websocket nicht verbinden android

Ich benutze gradle Abhängigkeit '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); 
    } 
} 
+0

Vielleicht ist das SSL-Zertifikat nicht für https-URL unterzeichnet . – SripadRaj

+0

Um es einfach auszudrücken, die Implementierung der WebSocket-Bibliothek hat viele [offene Fragen] (https://github.com/TooTallNate/Java-WebSocket/issues) in Bezug auf SSL. Die SSL-Implementierung funktioniert möglicherweise unter bestimmten Bedingungen, aber Sie sollten nicht erwarten, dass sie immer funktioniert. –

Antwort

1

Überprüfen Sie manifestieren:

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

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

Bitte senden Log-Katze!

+0

Ich habe diese beiden Erlaubnis hinzufügen – Priyanka

+0

logcat: unkonow Schema https – Priyanka

+0

überprüfen Sie meine Antwort @Priyanka –

0

Websocket hat seine eigenen Protokolle ws:// oder wss:// (ähnlich http://, https://), versuchen Sie diese Protokolle zu verwenden.

+0

Ich habe auch versucht, diese Methode, aber ich bekomme Ausnahme missformedurlexception unbekanntes Protokoll wss – Priyanka

+0

Ihr Websocket-Server läuft? –

+0

ja server funktioniert – Priyanka

1

ich eine Lösung finden) Wenn Sie WSS verwenden möchten: // Sie setWebSocketFactory setzen sollte .. Genau wie folgt aus:

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(); 
} 
+0

Wie sollte so etwas wie die Datei "Netzwerk- aussehen Sicherheits-Config "Datei und zertifiziert? Es ist erforderlich, die Verbindung herzustellen – Bartek

+0

Es ist nicht erforderlich. Ich benutze es ohne "Netzwerk-Sicherheit-Config" -Dateien. –

Verwandte Themen