Не удается подключить клиент Android с локальным сервером XMPP - PullRequest
3 голосов
/ 11 июня 2010

Это касается публикации здесь

Я могу подключить свой компьютер к настройке локального сервера 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 ]

6 голосов
/ 09 октября 2010

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

ConnectionConfiguration config = 
  new ConnectionConfiguration("192.168.0.221",5222,"mwbn43-1");
2 голосов
/ 27 декабря 2011

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

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

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

вместо

connection.login("username@host.com", "password");
0 голосов
/ 26 июня 2013

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

0 голосов
/ 20 марта 2012

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

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

ConnectionConfiguration config = new ConnectionConfiguration("hostname/IP address", 5222, "servicename/domainname");  
connection = new XMPPConnection(config);  
connection.connect();  
connection.login("user1", "password");`
0 голосов
/ 28 декабря 2011

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

...