通过 jid 加载多用户聊天的 vcard 在 smack 中使用 openfire 抛出错误的请求错误

问题描述

我正在获取用于群聊的 VCard。但收到接收,我的应用程序崩溃了。你能指出哪里出了问题或任何方向吗?

Caused by: org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPP error reply received from test3@conference.openfire.chats.com: XMPPError: bad-request - modify
        at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:268)
        at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:219)
        at org.jivesoftware.smackx.vcardtemp.VCardManager.loadVCard(VCardManager.java:139)
        at com.openfire.xmppchat.GroupChatActivity.onCreate(GroupChatActivity.kt:76)
        at android.app.Activity.performCreate(Activity.java:7955)
        at android.app.Activity.performCreate(Activity.java:7944)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
        at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:3463)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3635) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2175) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:7860) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075) 

我的代码点,它在 loadVCard(mucChat.room.asEntityBareJid()) 方法中崩溃

val vCardManager = VCardManager.getInstanceFor(Config.conn1)
        val vCard = vCardManager.loadVCard(mucChat.room.asEntityBareJid())
        val url =  URL("https://www.degraeve.com/images/lotus.jpg")
        val stream = url.openStream()
        Thread.sleep(500)
        val avatar2 = ByteStreams.toByteArray(stream)
        Thread.sleep(500)
        vCard.setAvatar(avatar2,"image/jpg")
        vCardManager.saveVCard(vCard)

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)