【发布时间】:2015-11-26 04:23:05
【问题描述】:
我已经使用以下代码成功创建了一个用户:
accountmanager = new org.jivesoftware.smack.AccountManager(connection);
accountmanager.createAccount(fbuserid,fbuserid);
但我无法使用以下代码将其他用户添加到已登录用户的名单中:
public void createEntry(String user, String name, String[] groups) throws XMPPException {
// Create and send roster entry creation packet.
RosterPacket rosterPacket = new RosterPacket();
rosterPacket.setType(IQ.Type.SET);
RosterPacket.Item item = new RosterPacket.Item(user, name);
if (groups != null) {
for (String group : groups) {
if (group != null) {
item.addGroupName(group);
}
}
}
rosterPacket.addRosterItem(item);
// Wait up to a certain number of seconds for a reply from the server.
PacketCollector collector = connection.createPacketCollector(
new PacketIDFilter(rosterPacket.getPacketID()));
connection.sendPacket(rosterPacket);
IQ response = (IQ) collector.nextResult(SmackConfiguration.getPacketReplyTimeout());
collector.cancel();
if (response == null) {
throw new XMPPException("No response from the server.");
}
// If the server replied with an error, throw an exception.
else if (response.getType() == IQ.Type.ERROR) {
throw new XMPPException(response.getError());
}
// Create a presence subscription packet and send.
Presence presencePacket = new Presence(Presence.Type.subscribe);
presencePacket.setTo(user);
connection.sendPacket(presencePacket);
}
我总是得到空的响应。有人请帮我解决这个问题并提前致谢
【问题讨论】:
-
是你的代码,还是 Smack 的
Roster类的主体?您收到的是XMPPError还是XMPPException- 只是“服务器没有响应”? -
它是 Smack 的 Roster 类的主体,我得到了 XMPP 异常。
-
你在测试你自己的服务器吗? - 检查日志。如果是第 3 方,请联系系统管理员,因为服务器端存在某种错误(但不是未经检查的错误)、名册创建被禁止或服务器实现不符合 XEP。