使用 asmack 未从 vCard 获得准确响应
Posted
技术标签:
【中文标题】使用 asmack 未从 vCard 获得准确响应【英文标题】:Not getting exact response from vCard using asmack 【发布时间】:2012-03-26 05:27:24 【问题描述】:我正在使用 asmack 库检索 vCard。我能够检索 vCard,但响应并不完全符合我的要求,它只给出响应
<iq id="3842p-8" to="lalit3686.android@gmail.com" type="get">
<vCard xmlns='vcard-temp'><FN>Lalit Poptani</FN>
预期的响应是有关用户的完整详细信息/信息,如 here 所示
我试过如下,
VCard vCard = new VCard();
try
ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp",
new VCardProvider());
vCard.load(conn, user);
Log.d("Vcard XML", vCard.toXML());
catch (XMPPException e)
e.printStackTrace();
我还尝试使用this answer 配置所需的一切。那么,是否需要进一步检索用户 vCard 的完整 xml?
【问题讨论】:
嗯。我看到您正在以完全相同的方式运行查询that appears to have worked for another SO user。唯一的复杂情况是您的输出在第一次输入后似乎被切断了。 this thread 对你有帮助吗? 感谢您的评论,但我也已经检查过了,但它不起作用。 很奇怪。不过,我想知道:Log.d
真的打印所有 XML 吗?附加调试器对这个问题有什么影响?
Log.d("Vcard XML", vCard.toXML());
打印我已经添加的输出。
感谢您的快速回复,但我认为您误会了。我怀疑Log.d
是否会以某种方式截断消息。这似乎与其行为一致:***.com/a/4269700/517815。公平地说,这是一段相当短的文字......
【参考方案1】:
在一个简单的 Java 应用程序(非 Android)中使用常规 Smack 尝试它,您可以在其中打开调试窗口 (-Dsmack.debugEnabled=true),该窗口将为您提供从中接收的原始节服务器。这至少会确认该节是正确的。如果不是,那么您有服务器问题。我认为这不太可能,因为格式错误的节通常会导致连接终止,因为客户端无法解析流。
如果它们是正确的,那么提供程序本身可能存在问题。根据文档,Smacks 的VCard class is incomplete,因此返回的信息可能根本不在解析的字段列表中。
知道返回的节将更容易验证这一点。
asmack 是从 Smack 派生的,因此在这种特殊情况下(实际上大多数情况下)它的行为方式应该完全相同。
【讨论】:
啊啊啊!!!谢谢只是不知道mConfiguration.setDebuggerEnabled(true);
做了什么,应用了它,让它工作了;)以上是关于使用 asmack 未从 vCard 获得准确响应的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 asmack 库发送和收听自定义 xmpp 存在数据包
使用 ResponseEntity 时未从 Websphere 响应中返回 text/html 标头,在 Tomcat 中有效吗?