2013-07-20 1 views
1

В течение нескольких часов я упустил эту проблему. Я изучаю API smack. Проблема в том, что когда я ищу собеседника (пользователя), он дает все согласованные параметры. Например, у меня есть эти пользователи: -user -user1 -user2Как выполнить поиск конкретного пользователя по smack

Поиск "пользователь" возвращающегося всех этих пользователей. Я хочу вернуть только одного пользователя, который точно соответствует. Как я могу это сделать?

Form searchForm = search.getSearchForm("search.localhost"); 
Form answerForm = searchForm.createAnswerForm(); 

answerForm.setAnswer("Username", true); 
answerForm.setAnswer("search", "user"); 

ReportedData data = search.getSearchResults(answerForm, "search.localhost"); 
.... 

Спасибо

ответ

0

Вам нужно будет искать точную JID. Если ваше имя службы локальный и вы ищете "JID", у вас есть несколько вариантов:

answerForm.setAnswer("search", "[email protected]");

или

answerForm.setAnswer("search", "user" + "@" + connection.getServiceName);

или

answerForm.setAnswer("search", "[email protected]" + connection.getServiceName);

Как использовать отчетные данные:

if (data != null) { 
     List<Row> rows = data.getRows(); 
     Iterator<Row> it = rows.iterator(); 
     while (it.hasNext()) { 
      Row row = it.next(); 
      List<String> values = row.getValues("jid"); 
      Iterator<String> iterator = values.iterator(); 
      if (iterator.hasNext()) { 
       String value = iterator.next(); 
       //Do what you want 
      } 
     } 
    }