1

ファイル転送をサポートする必要のあるチャットアプリケーションを開発しています。このために私はSmackAPIを使用しています。File status Errorしかし、私のファイルは転送されておらず、progress 0.0
ネット上でグーグルで検索していますが、ファイルを送信するためにすべて同じ方法で使用されています。しかし、私はエラーが発生しています。
この問題に関していくつか質問があることは知っていますが、適切な解決策が示されていません。

それで、これについて考えている人はいますか?この問題を解決する方法は?

編集:

127.0.0.110.0.2.2に変更してみましたが、ステータスはNegotiatingになりましたが、何度か試した後、ステータスErrorが発生しました。

これがファイル転送の私のコードです:

ServiceDiscoveryManager sdm = ServiceDiscoveryManager
                        .getInstanceFor(connection);
                if (sdm == null)
                    sdm = new ServiceDiscoveryManager(connection);
                sdm.addFeature("http://jabber.org/protocol/disco#info");
                sdm.addFeature("http://jabber.org/protocol/disco#item");
                sdm.addFeature("jabber:iq:privacy");
                Log.i("send file", "send file");
                FileTransferManager manager = new FileTransferManager(
                        connection);
                FileTransferNegotiator.setServiceEnabled(
                        connection, true);
                OutgoingFileTransfer transfer = manager
                        .createOutgoingFileTransfer("919974740823@127.0.0.1/Smack");
                Log.i("transfer file",
                        "outgoingfiletransfer is created");
                try {
                    OutgoingFileTransfer.setResponseTimeout(30000);
                    transfer.sendFile(
                            new File(path_file+"/"+"andr.jpeg"),
                            "Description");
                    Log.i("transfer file", "sending file");

                    Log.i("transfer file","the path is :"+path_file+"/"+"andr.jpeg");
                    while (!transfer.isDone()) {
                        try {
                            Thread.sleep(1000);
                            Log.i("transfer file",
                                    "sending file status :- "
                                            + transfer.getStatus()
                                            + " "
                                            + "progress:-"
                                            + transfer
                                                    .getProgress());
                            if (transfer.getStatus() == org.jivesoftware.smackx.filetransfer.FileTransfer.Status.error) {
                                transfer.cancel();
                                Log.e("", "ERROR");
                                break;
                            }
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            Log.e("catch", "catch" + e);
                            e.printStackTrace();
                        }
                    }
                } catch (XMPPException e) {
                    // TODO Auto-generated catch block
                    Log.e("catch", "catch" + e);
                    e.printStackTrace();
                }
                Log.i("transfer file", "--------");
            }

任意の助けや提案をいただければ幸いです。

ありがとう

4

1 に答える 1

0

私も同じ問題を抱えていますが、この行を追加した後

SmackConfiguration.setDefaultPacketReplyTimeout(15000);

その正常に動作します。

于 2016-07-28T13:12:35.810 に答える