Не удается подключить клиент Android с локальным сервером XMPP

Это касаемо поста здесь

Я могу подключить свой компьютер к локальной настройке сервера Tigase локально (я использую Smack API). Теперь у меня возникают проблемы, когда я хочу подключить Android Phone к этому серверу по Wi-Fi. Я могу подключиться к локальному серверу с помощью клиента Beem для android. Мой XMPP Доменное имя сервера - это имя моего компьютера "mwbn43-1", а IP-адрес - "192.168.0.221"(я могу пропинговать этот сервер с Эмулятор терминала Android). В настройках Beem есть опция Advanced, где я могу указать сервер, к которому я хочу подключиться (который я дал в качестве IP-адреса). Если я не установил эту опцию, я не смогу подключиться. Вот фрагмент кода код, который я использовал для моего клиента Android.

    XMPPConnection.DEBUG_ENABLED = true;
    ConnectionConfiguration config = new ConnectionConfiguration("mwbn43-1",5222);

    //ConnectionConfiguration config = new ConnectionConfiguration("192.168.0.221",5222);             
    config.setSASLAuthenticationEnabled(false);
    config.setCompressionEnabled(false);

    XMPPConnection xmpp = new XMPPConnection(config);

    try {

            xmpp.connect(); 

            xmpp.login("admin@mwbn43-1", "tigase");
            String host = xmpp.getHost();
            String id = xmpp.getConnectionID();
            int port = xmpp.getPort();
            boolean i = false;
            i = xmpp.isConnected();
            if(i)
            {answer = "Connected to " + host + " via port " + port + " with ID " + id;
            answerfield.setText(answer);}

          }//end try 
    catch (XMPPException e) {  
     answerfield.setText("Failed to connect");
     Log.v(TAG, "Failed to connect to " + xmpp.getHost());
            e.printStackTrace();

Я также могу подключиться к серверу Google Talk с помощью этого кода. При установлении соединения с локальным сервером я пытался указать IP-адрес и имя хоста для подключения. Когда я даю IP-адрес (192.168.0.221), я получаю "Нет ответа" из ошибки сервера 'с потоком: ошибка (хост-неизвестен), и когда я даю имя хоста (mwbn43-1), я получаю'remote-server-timeout(504)'с хостом неразрешенным.

Я посмотрел на код Beem, чтобы увидеть, как он соединяется с сервером, но не смог найти много. Я также дал пользователю разрешения для Интернета. Может кто-нибудь сказать, какие строки кода я должен добавить для связи с локальным сервером.

5 ответов

Попробуйте 3 аргумента конструктора ConnectionConfiguration. Это позволит вам указать хост, порт и домен. Хост и домен не обязательно должны совпадать. В вашем случае, я думаю:

ConnectionConfiguration config = 
  new ConnectionConfiguration("192.168.0.221",5222,"mwbn43-1");

Попробуйте удалить имя хоста из входа в систему.

Например, используйте

connection.login("username", "password");

вместо

connection.login("username@host.com", "password");

Убедитесь, что вы не используете нативный smack jar, который не будет работать на Android, попробуйте использовать asmack или одного из его предков android-and-xmpp-now-available-solutions

Проверьте, правильно ли вы указали разрешение: android.permission.INTERNET

Используйте конструктор с тремя аргументами для ConnectionConfiguration. и передать учетные данные без расширения имени хоста.

Например, см. Ниже код:

ConnectionConfiguration config = new ConnectionConfiguration("hostname/IP address", 5222, "servicename/domainname");  
connection = new XMPPConnection(config);  
connection.connect();  
connection.login("user1", "password");`
Другие вопросы по тегам