gpt4 book ai didi

java - 无法使用 aSmack 和 Openfire 保存 VCard

转载 作者:行者123 更新时间:2023-11-30 08:26:03 25 4
gpt4 key购买 nike

我在 aSmack 上创建 VCard 时遇到问题。当我尝试加载时,我发现我的 VCard 尚未保存。

  • 当我尝试加载由另一个客户端创建的 VCard 时,一切正常。
  • 当我尝试从在 Openfire 上创建的用户加载 VCard 时,出现以下错误:

服务不可用(503)
在 org.jivesoftware.smackx.packet.VCard.doLoad(VCard.java:568)
在 org.jivesoftware.smackx.packet.VCard.load(VCard.java:551)

  • 当我尝试从我使用客户端创建的用户加载 VCard 时,出现以下错误:

未找到远程服务器 (404)
在 org.jivesoftware.smackx.packet.VCard.doLoad(VCard.java:568)
在 org.jivesoftware.smackx.packet.VCard.load(VCard.java:551)

要从我的客户端创建 VCard,首先我登录然后使用以下代码:

VCard userCard = new VCard();
userCard.setField("customField", "yes");
try {
userCard.save(mConnection);
Log.i(TAG,"usercard saved "+userCard.toXML()); /* it is displayed! */
} catch (XMPPException e) {
Log.e(TAG,"An error occured while sending Vcard"+userCard.toXML(),e);
}

在连接 mConnection 之前,我添加了行 ProviderManager.getInstance().addIQProvider("vCard","vcard-temp", new VCardProvider());

根据这篇文章(http://community.igniterealtime.org/thread/34689),如果我们使用 LDAP,则无法修改 VCard。但是当我尝试保存 VCard 时没有出现错误,它只是没有保存它!

有没有人遇到同样的问题?

最佳答案

我认为问题可能在于您需要指定您创建的 vCard 属于谁:

  • 对于当前登录的用户,使用vcard.load(conn)
  • 对于您服务的任何用户,使用 vcard.load(conn, username) 其中 username 应该是完整的用户名,即 login@host.tld

我测试了这段代码,一切正常:

// Load vCard of logged in user
private void loadVCard(XMPPConnection conn) {
VCard vcard = new VCard();
vcard.load(conn);

vcard.setFirstName("Foo");
vcard.setAvatar(imageBytes("http://example.com/avatarjpg"), "image/jpeg");
vcard.save(conn);
}

// Load vCard of give user
// username: ex mylogin@chat.myservice.com
private void loadVCard(XMPPConnection conn, String username) {
VCard vcard = new VCard();
vcard.load(conn, username);

byte[] avatarBytes = vcard.getAvatar();
OutputStream out = new FileOutputStream(username + ".jpg");
out.write(avatarBytes);
out.close();
}

关于java - 无法使用 aSmack 和 Openfire 保存 VCard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com