我正在使用asmack庫來開發一個whatsapp樣式的聊天應用程序。我能夠連接和創建accounts.I想實現「添加聊天」功能whatsapp,我們從登記的電話號碼列表中選擇朋友。爲此,我想在我的服務器上爲用戶輸入我手機中的號碼,然後將它們添加到我的名單中,只要我點擊它們即可。 我可以輕鬆地在我的ejabberd 2.11服務器上登錄和註冊用戶。 但我無法從中檢索已註冊用戶的列表。 我用於搜索該代碼:在ejabberd服務器上搜索註冊用戶總是返回空格式(asmack)
UserSearchManager search = new UserSearchManager(conn);
try {
Form searchForm = search.getSearchForm("search."+conn.getServiceName());
Form answerForm = searchForm.createAnswerForm();
answerForm.setAnswer("Username",true);
answerForm.setAnswer("search",user);
System.out.println("search form");
ReportedData data = search.getSearchResults(answerForm,"search."+conn.getServiceName());
這工作完全在我的Openfire server..but我ejabberd2 server..i不得不將它修改爲:
UserSearchManager search = new UserSearchManager(conn);
try {
Form searchForm = search.getSearchForm("vjud."+conn.getServiceName());
Form answerForm = searchForm.createAnswerForm();
answerForm.setAnswer("user",username);//passed my jid in username i.e [email protected]
System.out.println("search form");
ReportedData data = search.getSearchResults(answerForm,"vjud."+conn.getServiceName());
if(!data.getRows().isEmpty())
{
List<Row> hue = data.getRows();Iterator<Row> it=hue.iterator();
while(it.hasNext())
{
Row row = it.next();
List<String> hue2 = row.getValues("jid");Iterator<String> iterator=hue2.iterator();
if(iterator.hasNext())
{
String value = iterator.next().toString();
System.out.println(value);
}
}
}
else{
System.out.println("its null");
}
上面的代碼總是返回一個空的表單。所以我應該傳遞什麼參數answerForm.setAnswer();爲ejabberd? 請參閱「answerForm.setAnswer(」用戶名「,true); answerForm.setAnswer(」search「,user);」 工作openfire .. 但ejabberd沒有一個布爾類型用戶名字段..我應該通過什麼?
請格式化你的問題,現在它是可怕的閱讀。 – Flow 2014-09-13 10:42:00
@Flow抱歉即時通訊新..如果你能幫忙嗎?我應該如何搜索用戶在ejabberd服務器? – 2014-09-13 11:21:25
你的第一個代碼給出了這個錯誤...告訴我如何解決它「沒有響應從服務器上的狀態設置」.... !!! – 2014-10-16 08:55:28