Отправка файлов с использованием smack 4.2.4 - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь отправить изображение и файл, используя smack 4.2.4, и мой сервер - jabb3r.org, но без какого-либо процесса, он отправляет мне эту ошибку:

XMPP error errorполучено от fattaneh123@jabb3r.org/Xabber_egtxJrjU: XMPPError: service-unavailable - подождите

Я протестировал функцию отправки файлов в xabber и безопасном чате, и они правильно работают с jabb3rно они загружают файл на proxy.hot-chilli.net:5281/upload, как я могу получить доступ к этому URL и отправить свой файл

public void send(String id, String path) throws XmppStringprepException{
        ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);
        if (sdm == null) {
            sdm = ServiceDiscoveryManager.getInstanceFor(connection);
            sdm.addFeature("http://jabber.org/protocol/disco#info");
            sdm.addFeature("jabber:iq:privacy");
        }
        FileTransferManager manager = FileTransferManager.getInstanceFor(connection);
        final OutgoingFileTransfer transfer = manager.createOutgoingFileTransfer(JidCreate.entityFullFrom("fattaneh123@jabb3r.org/Xabber_egtxJrjU"));


        FileTransferNegotiator.IBB_ONLY = true;

        final File file = new File(path);
        try {
            FileTransferNegotiator.getInstanceFor(connection).negotiateOutgoingTransfer(JidCreate.entityFullFrom("fattaneh123@jabb3r.org/Xabber_egtxJrjU"), transfer.getStreamID(), file.getName(), file.length(), "ali", 10000);
        } catch (XMPPException.XMPPErrorException e) {
            e.printStackTrace();
        } catch (SmackException.NotConnectedException e) {
            e.printStackTrace();
        } catch (SmackException.NoResponseException e) {
            e.printStackTrace();
        } catch (FileTransferException.NoAcceptableTransferMechanisms noAcceptableTransferMechanisms) {
            noAcceptableTransferMechanisms.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


        new AsyncTask<Void, Void, Void>() {


            protected void onPreExecute() {

            }

            @Override
            protected Void doInBackground(Void... params) {
                try {
                    transfer.sendFile(file,file.getName());
                } catch (SmackException e) {
                    e.printStackTrace();
                }
                while (!transfer.isDone()) {
                    if (transfer.getStatus().equals("Error")) {
                        Log.d("file transfer",
                                "ERROR!!! " + transfer.getError());

                    } else if (transfer.getStatus().equals("Cancelled")
                            || transfer.getStatus().equals("Refused")) {
                        Log.d("file transfer",
                                "Cancelled!!! " + transfer.getError());
                    }
                    try {
                        Thread.sleep(1000L);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                return null;
            }

            protected void onPostExecute(Void result) {

                if (transfer.getStatus().equals("Refused")
                        || transfer.getStatus().equals("Error")
                        || transfer.getStatus().equals("Cancelled")) {
                    Log.i("file transfer", "refused cancelled error "
                            + transfer.getError());

                } else {

                    Log.i("file transfer", "Success: " + transfer.getException().getMessage());
                }
            }

            ;
        }.execute();

    }
...