0

asmackこれは、 lib ( GtalkSms プロジェクトから) と Ejabberd サーバーを使用して、XMPP 経由でファイルを送信しようとする方法です。

//Configure provider in onCreate()
 configure(ProviderManager.getInstance());

// Configure function
private void configure(ProviderManager pm){
    pm.addIQProvider("si","http://jabber.org/protocol/si", new StreamInitiationProvider());
    pm.addIQProvider("query","http://jabber.org/protocol/bytestreams", new BytestreamsProvider());
    pm.addIQProvider("open","http://jabber.org/protocol/ibb", new OpenIQProvider());
    pm.addIQProvider("close","http://jabber.org/protocol/ibb", new CloseIQProvider());
    pm.addExtensionProvider("data","http://jabber.org/protocol/ibb", new DataPacketProvider());
}

// This is how I send file after login to server (I put everything below in a 
function, inside a Thread and call thread.start() at the end of function):

// set the serviceDiscoveryManager
ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(xmppConn);
if (sdm == null){
    sdm = new ServiceDiscoveryManager(xmppConn);
}
sdm.addFeature("http://jabber.org/protocol/disco#info");
sdm.addFeature("jabber:iq:privacy");

 // Create the file transfer manager
 FileTransferManager manager = new FileTransferManager(connection);
 FileTransferNegotiator.setServiceEnabled(connection, true);
 OutgoingFileTransfer transfer = manager
                    .createOutgoingFileTransfer(Receiver
                            + "@MyDomain");
 transfer.sendFile(new File(myFilePath), "myDescription");

別のクライアントを使用してファイル転送をテストすると ( http://coccinella.im/ )、(2 つの coccinella クライアント) 間で Ejarbberd サーバーを介してチャットし、ファイルを送信できます。coccinella クライアントと Android のクライアントを使用すると、それらの間でチャットでき、coccinella クライアントから Android クライアントに送信されたファイルを受信できます。ただし、Android クライアントから coccinella クライアントにファイルを送信しようとすると、transfer.isDone()常に返さtrueれ、transfer.getStatus() == Status.errorまた返されますtrue

では、私の Android クライアントはどうなるのでしょうか? 間違ったライブラリを使用しましたか? それとも私は何かを逃した?

編集:これは私がデバッガから得たものです:<iq id="QgJIb-29" to="phuocdh@localhost/Smack" from="phuoctest@localhost/Coccinella@phuocdh-pc" type="error"><error code="404" type="CANCEL"><item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><query xmlns="http://jabber.org/protocol/bytestreams"><streamhost></streamhost></query></error></iq>

4

0 に答える 0