恢复:
我尝试使用smack在Android应用中发送和接收自定义IQ数据包。
情境:
我必须向服务器发送一个iq数据包(IQP),告诉它我需要信息。然后服务器在收到此IQP时,发送另一个包含带有该信息的xml的IQP。
客户端:
<iq type="get" to="" id="8E6fp-X">
<query xmlns="custom:iq:jira">
</query>
</iq>
服务器
<iq type="result" id="8E6fp-X" to="user@hostname/resource">
<query xmlns="custom:iq:jira">
{"projects":[
{
"id":"10000",
"issues":[
{
"summary":"prueba",
"id":"10000",
"resporterDisplayName":"admin",
"reporterName":"admin",
"timespent":79200,
"key":"TEST-1"
}],
"name":"test",
"key":"TEST"}]}
</query>
</iq>
在恢复该信息并将其显示给用户后,用户完成了一些信息,然后再次使用IQP发送给服务器:
客户端
<iq type="set" to="" id="9E6fd-P">
<query xmlns="custom:iq:jira">
{"issueKey":"TEST-1","comment":"TEST-1","started":"2016-05-02T16:49:01","timeSpentJiraString":"1h 30m"}
</query>
</iq>
服务器
<iq type="result" id="vMxdk-X" to="user@hostname/resource">
<query xmlns="custom:iq:jira">
201
</query>
</iq>
问题:
通过所有这些信息,我搜索了如何实现这种类型的自定义IQ,并找到了一些链接。但我有点困惑,并且被阻止了。
首先,我创建了一个从IQ扩展的类:
public class CustomIQ extends IQ {
private String id;
private String ownXmlns = "custom:iq:jira";
@Override
public String getChildElementXML() {
String request = "<query xmlns = 'custom:iq:jira'> </query>";
return request;
}
}
在课堂上我将使用:
...
// IQ PACKETS
jiraIQ = new CustomIQ();
jiraIQ.setType(IQ.Type.GET);
jiraIQ.setTo("");
if(mConnection != null){
mConnection.sendPacket(jiraIQ);
Toast.makeText(this, "IQ Sendend with id: "+ jiraIQ.getPacketID() + "--", Toast.LENGTH_LONG).show();
}else {
Toast.makeText(this, "Connection off", Toast.LENGTH_LONG).show();
}
此时我迷路了。我想我必须有一些听众的孩子从服务器上捕获IQP,但我不知道如何从这一点继续。
我会感激某种帮助,因为我现在真的迷失了