2016-04-15 2 views
4

私は、認証がejabberdに登録されたユーザー名とパスワードを使用して行われる、作成したアンドロイドアプリにもログインしようとしています。接続は正常に確立されましたが、私はログインすることはできません。xmpp:ConnectionClosedOnエラー!パーサーはEND_DOCUMENTイベントを持っています

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

04-:

ログがある 「!。サーバはクロージングストリーム要素を送信せずに接続を閉じた場合ConnectionClosedOnエラーパーサがEND_DOCUMENTイベントこれは、例えば起こる可能性がありました」 - それはつまり、エラーになります15 19:27:45.052 31421-31749/com.synergy.allie.ecm D/Connect()機能:=>接続中....

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

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

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

04-15 19:27:45.102 31421-31752/com.synergy .allie.ecm I/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:Connected!

4月15日19:28:45.102 31421から31752/com.synergy.allie.ecmのW/AbstractXMPPConnection:接続エラー org.jivesoftware.smack.SmackExceptionで閉じる:パーサーがEND_DOCUMENTイベントを得ました。これは例えばサーバーが終了ストリーム要素を送信せずに接続を終了した場合 org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.parsePackets(XMPPTCPConnection.java:1148) at org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.access $ 200 java.lang.Thread.runでorg.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader $ 1.runで(XMPPTCPConnection.java:937) (XMPPTCPConnection.java:952) (Thread.java:856)

04-15 19:28:45.112 31421-31752/com.synergy.allie.ecm D/xmpp:ConnectionClosedOnエラー!パーサーはEND_DOCUMENTイベントを取得しました。これは例えばサーバが

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

このコードを試してみてくださいまた、前もって感謝します! –

+0

は接続コードを提供します。 –

+0

接続コード@SunilSingh –

答えて

0

決算ストリーム要素を送信せずに接続を閉じた場合は、接続のコードが必要な場合plsは私は私はそれを投稿します知っているよう

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

同じエラーSunil Singh。あなたは何を変えたのですか? –

+0

ストリーム管理を無効にし、サーバーのサイドストリーム管理をチェックできますか? –

+0

は、ejabberdサーバー構成を提供します。 –

関連する問題