【问题标题】:Image/binary data not being parsed from XMPP vCard未从 XMPP vCard 解析图像/二进制数据
【发布时间】:2011-09-24 12:39:57
【问题描述】:

请帮忙,我被这个问题困住了。

基本上我得到了一个基于 AVATAR 的 VCARD,我可以在调试模式下看到它,但 ASMACK 没有正确解析图像。它只是删除包含图像值的标签。

Logcat 显示正在接收的 XML:

DEBUG/SMACK(1336): <NICKNAME>TC</NICKNAME>
DEBUG/SMACK(1336): <PHOTO><TYPE>im
DEBUG/SMACK(1336): age/jpeg</TYPE><BINVAL>iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACHklEQVR42u2Zv64BQRSH9xmUCrUHEAUShUqlshWJxhOIECJ0oqIQL6BTK
DEBUG/SMACK(1336): 1AKrcYDkEgkKq3/9ya/5DQnTmaxbnb2zkm+Yu1a51szs2dmrJ8vxf1+BzxutxtwK6x/LyAlSvF4PACP6/UKjMBfNR2VqBF4N6QmQgnzxN0WMQIqkXevMwLvdlqe4G63A
DEBUG/SMACK(1336): 5fLBXiuE2svoGoalmWB0WgEtOvE2ghIxVoymQSFQgEUi0VgBF4VOB6PYDqdgslkAmazGaDPicViAYLBIKBotVognU6DT5us/wToBHU2Oq7X68C2bdDtdkGn03lKu90GJ
DEBUG/SMACK(1336): Mjv3+/3QTweB+fzGagGBd5E9RfgiUpfqNVqYLVaAacTlNPpBKQYDocgHA4D/gBVL1D9BaQTXKharYL5fA5IjP+ldKyaMvJye7PZgEAgAKR8uJj+AqpijIKa0HK5BE6HO
DEBUG/SMACK(1336): UmQx3g8BpFIBPDrxFJFewFVUUY3ajQagDoxF3e6TMK/V6lUQCwWA7zslvLxj4DTKV65XAaJRAJQcZbL5UA+nwd0nM1mwWAwADwhuq5UKgFJkI6lpqe/wKsLVNvtFhwOB
DEBUG/SMACK(1336): 7Df759CL7BQKAQoMpkMaDabgIT4g5R+n1/nXwG3IhqNglQqBXq9HvD8/oB2AryT0XBIk/r1eg08u6yirYCqFPnWgpYRkMpd1YvRs5t82grwxKmo+/bGhhF4VcyzGxy+E
DEBUG/SMACK(1336): aDhUhpWnU5djYBbGxtuD5e+FfgFV75bC/jUS/sAAAAASUVORK5CYII=</BINVAL></PHOTO>
DEBUG/SMACK(1336): <EMAIL><HOME/><INTERNET/><PREF/><USERID>test@test.com</
DEBUG/SMACK(1336): USERID>

在这里,在我的消息监听器中输出数据包,您可以看到照片标签被丢弃。我不知道为什么 asmack 不显示这个。

class MyPacketListener implements PacketListener{
    public void processPacket(Packet packet){
        System.out.println("IQ Received XML : " + packet);  
        Log.i("Packet IQ", packet.toString());              
    }          
}

这是 logcat 的输出:

INFO/System.out(1336): <NICKNAME>TC</NICKNAME>
INFO/System.out(1336): <TITLE></TITLE>
INFO/System.out(1336): <EMAIL><HOME/><INTERNET/><PREF/><USERID>test@test.com</USERID>

【问题讨论】:

标签: xmpp smack vcf-vcard asmack


【解决方案1】:

org/jivesoftware/smackx/provider/VCardProvider.java,大约第 117 行,有这样一行:

vCard.setEncodedImage(getTagContents("BINVAL"));

这是不正确的。 BINVALPHOTO 的子代,而不是 vCard 的子代。因此,图像被设置为 NULL。

【讨论】:

  • Joe..但我使用的是从 beem 项目调用的已编译的 libray jar 文件..有没有其他方法。请指导..
  • 我也尝试过发送 IQ Pakcets,同样的事情也发生在那里,我已经发布了一个问题。基本上我正在发送 IQ 数据包并在调试模式下获取带有图像的 vcard,但是当我编写 packet.toXML() 或 packet.toString 时,IQ Pakcet 列表器会以某种方式下降到 Avatar,是否无法在控制台上打印二进制值或日志。请帮助我...
  • 这是库中的一个错误。它需要修复。您可以自己编译代码,使用不同的库,或者自己从头开始编写代码,我不建议这样做。
  • ASmack 似乎是目前 Android 的唯一选择。提交错误。也许他们会为你修好。
  • VDroid:有关 XMPP Android 库解决方案,请参阅 this question
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 2014-08-23
  • 1970-01-01
相关资源
最近更新 更多