2016-04-29 17 views
1

Ich implementiere eine Chat-Anwendung, für die ich eine Openfire Unterstützung als Backend habe und Asmack version 8-0.8.9 verwende, um es zu implementieren. Allerdings habe ich ein Problem mit nicht SASL Authentifizierung während der Anmeldung und ich bekomme "keine Antwort von Server" in der Nachricht. Außerdem stehe ich auch vor dem Problem, dass, wenn sich die App für einige Minuten im Leerlauf befindet (ohne etwas auszuführen), meine Sitzung aus dem Openfire entfernt wird und die Verbindung getrennt wird. DieseIch bekomme kein SASL-Authentifizierungsproblem mit XMPP

ist, wie ich zu Openfire anschließe und dann Login ausführen:

AndroidConnectionConfiguration connConfig = 
new AndroidConnectionConfiguration(HOST, PORT,SERVICE); 
connConfig.setDebuggerEnabled(true); 
connConfig.setReconnectionAllowed(false); 
connConfig.setRosterLoadedAtLogin(true); 
connConfig.setSASLAuthenticationEnabled(false); 
connection.connect(); 
connection.login(Uname,Password); 

In den meisten Fällen sind dies funktioniert gut, aber zufällig gibt es mir einen Fehler bei der Anmeldung also keine Antwort vom Server mit Non- SASL-Authentifizierungsnachricht

Was mache ich falsch? Lassen Sie es mich wissen, wenn Sie ein anderes Detail benötigen.

Vielen Dank im Voraus!

+0

Können Sie den StackTrace anzeigen? –

+0

@ BoSøborgPetersen SASL-Authentifizierung fehlgeschlagen mit Mechanismus PLAIN: bei org.jivesoftware.smack.SASLAuthentication.authenticate (SASLAuthentication.java: 325) bei org.jivesoftware.smack.XMPPConnection.login (XMPPConnection.java: 395) –

Antwort

0

Sie müssen sicherstellen, dass Sie alle notwendigen Gläser enthalten.

Abhängig von Ihrem Abhängigkeitsverwaltungssystem müssen Sie es anders hinzufügen, aber stellen Sie sicher, dass smack-sasl-javax, smack-java7 und smack-resolver-javax enthalten sind.

Mit Maven wäre es:

<dependency> 
    <groupId>org.igniterealtime.smack</groupId> 
    <artifactId>smack-sasl-javax</artifactId> 
    <version>4.1.6</version> 
</dependency> 
<dependency> 
    <groupId>org.igniterealtime.smack</groupId> 
    <artifactId>smack-java7</artifactId> 
    <version>4.1.6</version> 
</dependency> 
<dependency> 
    <groupId>org.igniterealtime.smack</groupId> 
    <artifactId>smack-resolver-javax</artifactId> 
    <version>4.1.6</version> 
</dependency> 

Und stellen Sie sicher, dass Sie das Serverzertifikat zu überprüfen.

Dies kann mit 'setHostnameVerifier (XMPPostnameVerifier Verifier)' und 'setCustomSSLContext (SSLContext context)' erfolgen.