2016-04-15 8 views
4

Ich versuche auch, mich an die Android-App, die ich erstellt habe, anmelden, deren Authentifizierung erfolgt mit dem Benutzernamen und Passwort in Ejabberd registriert werden. Die Verbindung wurde erfolgreich hergestellt, aber ich kann mich nicht einloggen. Es gibt einen Fehler nämlich - „ConnectionClosedOn Fehler Parser wurde end_document Ereignis Dieses zB passieren könnte, wenn der Server die Verbindung ohne das Senden ein Schließstromelement geschlossen!“.xmpp: ConnectionClosedOn Fehler! Parser bekam END_DOCUMENT Ereignis

Das Protokoll ist:

04-15 19:27:45.052 31421-31421/com.synergy.allie.ecm D/calling xmpp connect: started 

04- 15 19: 27: 45.052 31421-31749/com.synergy.allie.ecm D/Connect() Funktion: => Verbindung ....

04-15 19: 27: 45.072 31421-31421/com.synergy .allie.ecm D/LoginAktivität: onServiceConnected

04-15 19: 2 7: 45.102 31421-31751/com.synergy.allie.ecm I/System.out: 07:27:45 Uhr SENT (0): http://etherx.jabber.org/streams 'version =' 1.0 'xml: lang = 'de'>

04-15 19: 27: 45.102 31421-31752/de.synergy.allie.ecm I/System.out: 07:27:45 PM RECV (0): http: // etherx.jabber.org/streams 'id =' 284868730 'von =' Allen 'Version =' 1.0 'xml: lang =' de '>

04-15 19: 27: 45.102 31421-31752/com.synergy .allie.ecm Ich/System.out: 07:27:45 PM RECV (0): http://jabber.org/protocol/caps 'hash =' sha-1 'node =' http://www.process-one.net/en/ejabberd/ 'ver =' SLr01mk3X636tk4sDXYXPXsNNcE = '/>http://jabber.org/features/iq-register'/>PLAINDIGEST-MD5SCRAM-SHA-1

04-15 19: 27: 45.142 31421-31749/com. synergy.allie.ecm D/xmpp: Verbunden!

04-15 19: 28: 45,102 31.421-31.752/com.synergy.allie.ecm W/AbstractXMPPConnection: Verbindung geschlossen mit Fehler org.jivesoftware.smack.SmackException: Parser bekam end_document Ereignis. Dies könnte z.B. Wenn der Server die Verbindung ohne Senden eines Closing-Stream-Elements an org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.parsePackets (XMPPTCPConnection.java:1148) bei org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.access $ 200 geschlossen hat (XMPPTCPConnection.java:937) bei org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader $ 1.run (XMPPTCPConnection.java:952) bei java.lang.Thread.run (Thread.java:856)

04-15 19: 28: 45.112 31421-31752/com.synergy.allie.ecm D/xmpp: ConnectionClosedOn Fehler! Parser hat das Ereignis END_DOCUMENT erhalten. Dies könnte z.B. Wenn der Server die Verbindung beendet, ohne einen Schließstromelement Senden

public class MyXMPP 
{ 
public static boolean connected = false; 
public boolean loggedin = false; 
public static boolean isconnecting = false; 
public static boolean isToasted = true; 
private boolean chat_created = false; 
private String serverAddress; 
public static XMPPTCPConnection connection; 
public static String loginUser; 
public static String passwordUser; 
Gson gson; 
MyService context; 
public static MyXMPP instance = null; 
public static boolean instanceCreated = false; 
public org.jivesoftware.smack.chat.Chat Mychat; 
ChatManagerListenerImpl mChatManagerListener; 
MMessageListener mMessageListener; 
Boolean logon; 

public MyXMPP(MyService context, String serverAdress, String logiUser, 
       String passwordser) { 
    this.serverAddress = serverAdress; 
    this.loginUser = logiUser; 
    this.passwordUser = passwordser; 
    this.context = context; 
    init(); 

} 

public static MyXMPP getInstance(MyService context, String server, 
           String user, String pass) { 

    if (instance == null) { 
     instance = new MyXMPP(context, server, user, pass); 
     instanceCreated = true; 
    } 
    return instance; 
} 


String text = ""; 
String mMessage = "", mReceiver = ""; 
static { 
    try { 
     Class.forName("org.jivesoftware.smack.ReconnectionManager"); 
    } catch (ClassNotFoundException ex) { 
     // problem loading reconnection manager 
    } 
} 

public void init() { 
    gson = new Gson(); 
    mMessageListener = new MMessageListener(context); 
    mChatManagerListener = new ChatManagerListenerImpl(); 
    initialiseConnection(); 

} 

private void initialiseConnection() { 

    XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder(); 
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    config.setServiceName(serverAddress); 
    config.setHost("***.***.***.***"); 
    config.setPort(5222); 
    config.setDebuggerEnabled(true); 
    XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true); 
    XMPPTCPConnection.setUseStreamManagementDefault(true); 
    connection = new XMPPTCPConnection(config.build()); 
    XMPPConnectionListener connectionListener = new XMPPConnectionListener(); 
    connection.addConnectionListener(connectionListener); 

} 

public void disconnect() { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      connection.disconnect(); 
     } 
    }).start(); 
} 

public void connect(final String caller) { 

    AsyncTask<Void, Void, Boolean> connectionThread = new AsyncTask<Void, Void, Boolean>() { 
     @Override 
     protected synchronized Boolean doInBackground(Void... arg0) { 
      if (connection.isConnected()) 
       return false; 
      isconnecting = true; 
      if (isToasted) 
       new Handler(Looper.getMainLooper()).post(new Runnable() { 

        @Override 
        public void run() { 

         Toast.makeText(context, caller + "Trying to establish a connection!", Toast.LENGTH_LONG).show(); 
        } 
       }); 
      Log.d("Connect() Function", caller + "=>connecting...."); 

      try { 
       connection.connect(); 
       DeliveryReceiptManager dm = DeliveryReceiptManager 
         .getInstanceFor(connection); 
       dm.setAutoReceiptMode(AutoReceiptMode.always); 
       dm.addReceiptReceivedListener(new ReceiptReceivedListener() { 

        @Override 
        public void onReceiptReceived(final String fromid, 
                final String toid, final String msgid, 
                final Stanza packet) { 

        } 
       }); 
       connected = true; 

      } catch (IOException e) { 
       if (isToasted) 
        new Handler(Looper.getMainLooper()) 
          .post(new Runnable() { 

           @Override 
           public void run() { 

            Toast.makeText(context, "(" + caller + ")" + "IOException: ", 
              Toast.LENGTH_SHORT).show(); 
           } 
          }); 

       Log.e("(" + caller + ")", "IOException: " + e.getMessage()); 
      } catch (SmackException e) { 
       new Handler(Looper.getMainLooper()).post(new Runnable() { 

        @Override 
        public void run() { 
         Toast.makeText(context, "(" + caller + ")" + "SMACKException: ", 
           Toast.LENGTH_SHORT).show(); 
        } 
       }); 
       Log.e("(" + caller + ")", "SMACKException: " + e.getMessage()); 
      } catch (XMPPException e) { 
       if (isToasted) 

        new Handler(Looper.getMainLooper()) 
          .post(new Runnable() { 

           @Override 
           public void run() { 

            Toast.makeText(context, "(" + caller + ")" + "XMPPException: ", 
              Toast.LENGTH_SHORT).show(); 
           } 
          }); 
       Log.e("connect(" + caller + ")", 
         "XMPPException: " + e.getMessage()); 

      } 
      return isconnecting = false; 
     } 
    }; 
    connectionThread.execute(); 
} 

public void login() 
{ 
    try 
    { 
     connection.login(loginUser, passwordUser); 
     Log.i("LOGIN", "Praise Jesus! We're connected to the Xmpp server!"); 
     logon=true; 
    } 
    catch (XMPPException | SmackException | IOException e) 
    { 
     logon=false; 
     e.printStackTrace(); 
    } 
    catch (Exception e) 
    { 
     logon=false; 
    } 
} 

private class ChatManagerListenerImpl implements ChatManagerListener { 
    @Override 
    public void chatCreated(final org.jivesoftware.smack.chat.Chat chat, 
          final boolean createdLocally) { 
     if (!createdLocally) 
      chat.addMessageListener(mMessageListener); 

    } 

} 

public void sendMessage(ChatMessage chatMessage) { 
    String body = gson.toJson(chatMessage); 

    if (!chat_created) { 
     Mychat = ChatManager.getInstanceFor(connection).createChat(chatMessage.receiver 
         + "@" + context.getString(R.string.server), 
       mMessageListener); 
     chat_created = true; 
    } 
    final Message message = new Message(); 
    message.setBody(body); 
    message.setStanzaId(chatMessage.msgid); 
    message.setType(Message.Type.chat); 

    try { 
     if (connection.isAuthenticated()) { 

      Mychat.sendMessage(message); 

     } else { 

      login(); 
     } 
    } catch (NotConnectedException e) { 
     Log.e("xmpp.SendMessage()", "msg Not sent!-Not Connected!"); 

    } catch (Exception e) { 
     Log.e("xmpp.SendMessage()", "msg Not sent!" + e.getMessage()); 
    } 

} 

public class XMPPConnectionListener implements ConnectionListener { 
    @Override 
    public void connected(final XMPPConnection connection) { 

     Log.d("xmpp", "Connected!"); 
     connected = true; 
     if (!connection.isAuthenticated()) { 
      login(); 
     } 
    } 

    @Override 
    public void connectionClosed() { 
     if (isToasted) 

      new Handler(Looper.getMainLooper()).post(new Runnable() { 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 

        Toast.makeText(context, "ConnectionCLosed!", 
          Toast.LENGTH_SHORT).show(); 

       } 
      }); 
     Log.d("xmpp", "ConnectionCLosed!"); 
     connected = false; 
     chat_created = false; 
     loggedin = false; 
    } 

    @Override 
    public void connectionClosedOnError(Exception arg0) { 
     if (isToasted) 

      new Handler(Looper.getMainLooper()).post(new Runnable() { 

       @Override 
       public void run() { 
        Toast.makeText(context, "ConnectionClosedOn Error!!", 
          Toast.LENGTH_SHORT).show(); 

       } 
      }); 
     Log.d("xmpp", "ConnectionClosedOn Error! "+arg0.getMessage()); 
     connected = false; 

     chat_created = false; 
     loggedin = false; 
    } 

    @Override 
    public void reconnectingIn(int arg0) { 

     Log.d("xmpp", "Reconnectingin " + arg0); 

     loggedin = false; 
    } 

    @Override 
    public void reconnectionFailed(Exception arg0) { 
     if (isToasted) 

      new Handler(Looper.getMainLooper()).post(new Runnable() { 

       @Override 
       public void run() { 

        Toast.makeText(context, "ReconnectionFailed!", 
          Toast.LENGTH_SHORT).show(); 

       } 
      }); 
     Log.d("xmpp", "ReconnectionFailed!"); 
     connected = false; 

     chat_created = false; 
     loggedin = false; 
    } 

    @Override 
    public void reconnectionSuccessful() { 
     if (isToasted) 

      new Handler(Looper.getMainLooper()).post(new Runnable() { 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 

        Toast.makeText(context, "REConnected!", 
          Toast.LENGTH_SHORT).show(); 

       } 
      }); 
     Log.d("xmpp", "ReconnectionSuccessful"); 
     connected = true; 

     chat_created = false; 
     loggedin = false; 
    } 

    @Override 
    public void authenticated(XMPPConnection arg0, boolean arg1) { 
     Log.d("xmpp", "Authenticated!"); 
     loggedin = true; 

     ChatManager.getInstanceFor(connection).addChatListener(
       mChatManagerListener); 

     chat_created = false; 
     new Thread(new Runnable() { 

      @Override 
      public void run() { 
       try { 
        Thread.sleep(500); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 
     }).start(); 
     if (isToasted) 

      new Handler(Looper.getMainLooper()).post(new Runnable() { 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 

        Toast.makeText(context, "Connected!", 
          Toast.LENGTH_SHORT).show(); 

       } 
      }); 
    } 
} 

private class MMessageListener implements ChatMessageListener { 

    public MMessageListener(Context contxt) { 
    } 

    @Override 
    public void processMessage(final org.jivesoftware.smack.chat.Chat chat, 
           final Message message) { 
     Log.i("MyXMPP_MESSAGE_LISTENER", "Xmpp message received: '" 
       + message); 

     if (message.getType() == Message.Type.chat 
       && message.getBody() != null) { 
      final ChatMessage chatMessage = gson.fromJson(
        message.getBody(), ChatMessage.class); 

      processMessage(chatMessage); 
     } 
    } 

    private void processMessage(final ChatMessage chatMessage) { 

     chatMessage.isMine = false; 
     Chats.chatlist.add(chatMessage); 
     new Handler(Looper.getMainLooper()).post(new Runnable() { 

      @Override 
      public void run() { 
       Chats.chatAdapter.notifyDataSetChanged(); 

      } 
     }); 
    } 

} 

}

+0

Wenn Sie den Code der Verbindung wollen pls lassen Sie mich wissen, dass ich es veröffentlichen werde ebenfalls. Danke im Voraus! –

+0

Verbindungscode zur Verfügung stellen. –

+0

Ich habe den Verbindungscode @SunilSingh –

Antwort

0

versuchen diesen Code

public void initConnection(String user, String pass) throws XMPPException { 
     // TODO Auto-generated method stub 





     String SERVER_HOST = "192.168.1.199"; 
     int SERVER_PORT = 5222; 
     String SERVICE_NAME = "Allen"; 
     try { 
      if (android.os.Build.VERSION.SDK_INT > 9) { 
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
         .permitAll().build(); 
       StrictMode.setThreadPolicy(policy); 
      } 

      XMPPTCPConnectionConfiguration.Builder connConfig = XMPPTCPConnectionConfiguration 
        .builder(); 
      connConfig 
        .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
      connConfig.setUsernameAndPassword(user, pass); 
      connConfig.setServiceName(SERVICE_NAME); 
      connConfig.setHost(SERVER_HOST); 
      connConfig.setPort(SERVER_PORT).setCompressionEnabled(false); 
      connConfig.setDebuggerEnabled(true); 
      connConfig.setConnectTimeout(25000); 
      XMPPTCPConnectionConfiguration configuration = connConfig.build(); 
      // XMPPTCPConnection.setUseStreamManagementDefault(true); 
      // XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true); 
      // XMPPTCPConnection.setReplyToUnknownIqDefault(true); 

      connection = new XMPPTCPConnection(configuration); 
      connection.setUseStreamManagement(true); 
      connection.setUseStreamManagementResumption(true); 
      connection.setReplyToUnknownIq(true); 
      connection.setPacketReplyTimeout(25000); 
      ReconnectionManager manager = ReconnectionManager.getInstanceFor(connection); 
      manager.setFixedDelay(15); 
      ReconnectionManager.setDefaultReconnectionPolicy(ReconnectionManager.ReconnectionPolicy.FIXED_DELAY); 
      manager.enableAutomaticReconnection(); 
      try { 
       connection.connect(); 
       connection.login(); 


       //logIn(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
+0

Gleicher Fehler Sunil Singh. Was war die Veränderung, die du gemacht hast? –

+0

Stream-Management deaktivieren und prüfen, ob Server-Stream-Management aktiviert ist? –

+0

bieten ejabberd Serverkonfiguration. –