如何发送和接收自定义IQ数据包smack android

时间:2016-06-14 12:01:39

标签: java android asmack

恢复:

我尝试使用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,但我不知道如何从这一点继续。

我会感激某种帮助,因为我现在真的迷失了

0 个答案:

没有答案