如何使用Asmack + Openfire在Android中发送文件?

时间:2014-02-12 10:31:33

标签: java android asmack

您能否使用Asmack + openfire向我发送要发送文件的代码 我试过了,但我收到了error code="503" type="cancel这样的错误 求你帮帮我。

2 个答案:

答案 0 :(得分:1)

您必须在创建OutgoingFileTransfer时发送一个完全限定的jabber ID作为detination userID,它由一个节点,一个域和一个资源(user @ domain / resource)组成,如前所述评论,实际上您发送a2@aaa并且不正确。

<iq id="SU8c1-17" to="a2@aaa" from="a1@aaa/Smack" type="set">
    <si xmlns="http://jabber.org/protocol/si" id="jsi_2427513438410796738" profile="http://jabber.org/protocol/si/profile/file-transfer">
        <file xmlns="http://jabber.org/protocol/si/profile/file-transfer" name="user.json" size="379">
            <desc>test_file</desc>
        </file>
        <feature xmlns="http://jabber.org/protocol/feature-neg">
            <x xmlns="jabber:x:data" type="form">
                <field var="stream-method" type="list-multi">
                    <option>
                        <value>http://jabber.org/protocol/bytestreams</value>
                    </option>
                    <option>
                        <value>http://jabber.org/protocol/ibb</value>
                    </option>
                </field>
            </x>
        </feature>
    </si>
</iq>

所以,你的sentTo变量应该

String sentTo = "user@domain/resource";

OutgoingFileTransfer transfer = manager.createOutgoingFileTransfer(sentTo)

答案 1 :(得分:-1)

我认为您应该使用文件节点,源和域发送jabber id。它应该在sentTo方法中。