我正在尝试实现与Openfire服务器交互的java smack客户端。我添加了监控服务的插件,也启用了存档。现在,我可以在openFire管理控制台中查看聊天记录。我想用Smack做同样的事情。这是我写的代码。
XMPPTCPConnection connection = connectToXMPP(Constants.XMPPADMINUSERNAME, Constants.XMPPADMINPWD ,Constants.XMPPDOMAIN);
MamManager mamManager = MamManager.getInstanceFor(connection);
try {
DataForm form = new DataForm(DataForm.Type.submit);
FormField field = new FormField(FormField.FORM_TYPE);
field.setType(FormField.Type.hidden);
field.addValue(MamElements.NAMESPACE);
form.addField(field);
FormField formField = new FormField("with");
formField.addValue("userlocal1@125.99.44.122");
form.addField(formField);
boolean isSupported = mamManager.isSupported();
// "" empty string for before
RSMSet rsmSet = new RSMSet(maxResults, "", RSMSet.PageDirection.before);
MamManager.MamQueryResult mamQueryResult = mamManager.page(form, rsmSet);
// MamManager.MamQueryResult mamQueryResult1 = mamManager.queryArchive(JidCreate.from("userlocal1@125.99.44.122"));
return mamQueryResult;
} catch (Exception e) {
e.printStackTrace();
}
return null;
现在问题是forwardedMessages ArrayList总是为null。我究竟做错了什么?? isSupported是真的,我可以在管理控制台上看到聊天历史...请指导...
答案 0 :(得分:1)
我注意到你正在尝试获取最后几条归档消息,这是有道理的。我不确定你的'之前'值是否应为空。出于测试目的,请尝试撤消页面方向,并查看是否可以获取第一个/最早的少数存档消息。