asmack 라이브러리를 사용하여 whatsapp 스타일 채팅 응용 프로그램을 개발하고 있습니다. 연결하고 계정을 만들 수 있습니다. "채팅 추가"기능을 구현하고 싶습니다. whatsapp, 등록 된 전화 번호 목록에서 친구를 선택합니다.이 경우, 내 전화에서 가지고 있었던 번호에 대해 내 서버에서 usersearch를 수행하고 싶었습니다. 그런 다음 클릭하면 내 명단에 추가합니다. ejabberd 2.11 서버에 쉽게 로그인하여 사용자를 등록 할 수 있습니다. 그러나 이미 등록 된 사용자 목록을 검색 할 수 없습니다. 내가 검색이 코드를 사용 :ejabberd에 등록 된 사용자를 검색 서버는 null 폼을 항상 반환합니다. (asmack)
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");
}
위의 코드는 항상 반환
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());
이 내 ejabberd2의 server..i 내의 Openfire의 server..but에 완벽하게 작동하는 것은 그것을 수정했다 null 폼입니다. 그래서 어떤 인자가 answerForm.setAnswer()에서 전달되어야합니다; ejabberd를 위해? "answerForm.setAnswer ("사용자 이름 ", true); answerForm.setAnswer ("search ", user);" openfire에서 근무했습니다. 하지만 ejabberd에는 부울 유형 Username 필드가 있습니다. 그래서 통과해야합니까?
질문을 포맷하십시오, 지금은 읽을 끔찍. – Flow
@Flow 죄송 메신저 새로운 당신은 도움이 될 수 ..if? 어떻게 ejabberd 서버에서 사용자를 검색해야합니까? –
첫 번째 코드는이 오류를 제공합니다 ... 해결 방법을 알려주십시오 "상태 세트의 서버에서 응답 없음".... –