Android应用获取错误使用Smack和Openfire 4.1.4发送图像

问题描述 投票:4回答:1

我正在使用XMPP与Openfire 4.1.4开发聊天应用程序,一对一文本聊天工作正常,但我发送图像获取错误

这是我的文件发送代码:

Log.e("ad",">selectedImagePath====="+selectedImagePath);
    FileTransferManager manager = FileTransferManager.getInstanceFor(Config.conn1);
                OutgoingFileTransfer transfer;
                transfer = manager.createOutgoingFileTransfer(userJid+"/"+Config.conn1); //JID - user@host/resource
                File file = new File(selectedImagePath);
                try {
                    transfer.sendFile(file, "image message test");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                while (!transfer.isDone()) {
                    if (transfer.getStatus().equals(AMPExtension.Status.error)) {
                        Log.e("ad","ERROR!!! " + transfer.getError());
                    } else if (transfer.getStatus().equals(FileTransfer.Status.cancelled)
                            || transfer.getStatus().equals(FileTransfer.Status.refused)) {
                        Log.e("ad","Cancelled!!! " + transfer.getError());
                    }
                    try {
                        Thread.sleep(1000L);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                if (transfer.getStatus().equals(FileTransfer.Status.refused) ) {    
                    Log.e("ad","refused cancelled error" + transfer.getError());
                }
                else  if (transfer.getStatus().equals(FileTransfer.Status.error))
                {
                    Log.e("ad","error="+ transfer.getError());
                }
                else  if  (transfer.getStatus().equals(FileTransfer.Status.cancelled))
                {
                    Log.e("ad","cancelled");
                }
                else {
                    Log.e("ad","Success");
                }

这是我的日志:

  02-23 14:56:32.489 14951-14951/com.app.chatv1 E/ad: >selectedImagePath=====/storage/emulated/0/Pictures/1519194363122.jpg
02-23 14:56:33.490 14951-14951/com.app.chatv1 E/ad: error=null

我有另一个相关的问题:当我成功将图像发送到服务器时,它将放置在服务器位置?

android xmpp openfire file-transfer
1个回答
0
投票
   FileTransferManager ftm1 =FileTransferManager.getInstanceFor(connection);
   FileTransferManager ftm2=FileTransferManager.getInstanceFor(connection2);

    ftm2.addFileTransferListener(new FileTransferListener() {
        @Override
        public void fileTransferRequest(FileTransferRequest request) {
            IncomingFileTransfer ift = request.accept();
            try {
                InputStream is = ift.recieveFile();
                ByteArrayOutputStream os = new ByteArrayOutputStream();
                int nRead;
                byte[] buf = new byte[1024];
                while ((nRead = is.read(buf,  0, buf.length)) != -1) {
                    os.write(buf, 0, nRead);
                }
                os.flush();
                dataReceived = os.toByteArray();
            } catch (SmackException | IOException | XMPPErrorException e) {
                e.printStackTrace();
            }
            if (Arrays.equals(dataToSend, dataReceived)) {
                System.out.println("Received data matches send data. \\o/");
            } else {
                System.err.println("Recieved data DOES NOT match send data. :(");
            }
        }
    });

    OutgoingFileTransfer oft = ftm1.createOutgoingFileTransfer(XmppStringUtils.completeJidFrom(USER, SERV, "resourse"));
    oft.sendStream(new ByteArrayInputStream(dataToSend), "hello.txt", dataToSend.length, "A greeting");
    outerloop: while (!oft.isDone()) {
        switch (oft.getStatus()) {
        case error:
            System.out.println("Filetransfer error: " + oft.getError());
            break outerloop;
        default:
            System.out.println("Filetransfer status: " + oft.getStatus() + ". Progress: " + oft.getProgress());
            break;
        }
        Thread.sleep(1000);
    }

    connection.disconnect();
    connection2.disconnect();
    Thread.sleep(1000);
}

一个连接正在发送文件而另一个连接正在接收这是工作代码。

© www.soinside.com 2019 - 2024. All rights reserved.