【发布时间】:2015-09-27 10:54:23
【问题描述】:
我正在尝试使用服务器上的 openfire 和 smack java 库通过聊天发送文件。
这是我得到的输出:
状态 :: Error Error :: null Exception :: service-unavailable(503) 是 完成了吗?真的
这是我的发送者和接收者函数:
public void fileTransfer(String fileName, String destination) throws XMPPException {
// Create the file transfer manager
FileTransferManager manager = new FileTransferManager(connection);
FileTransferNegotiator.setServiceEnabled(connection,true);
// Create the outgoing file transfer
OutgoingFileTransfer transfer = manager.createOutgoingFileTransfer(destination);
// Send the file
transfer.sendFile(new File(fileName), "You won't believe this!");
try {
Thread.sleep(10000);
}
catch(Exception e){}
System.out.println("Status :: " + transfer.getStatus() + " Error :: " + transfer.getError() + " Exception :: " + transfer.getException());
System.out.println("Is it done? " + transfer.isDone());
}
public void fileReceiver(final boolean accept, final String fileName) {
// Create the file transfer manager
final FileTransferManager manager = new FileTransferManager(connection);
// Create the listener
manager.addFileTransferListener(new FileTransferListener() {
public void fileTransferRequest(FileTransferRequest request) {
// broadcast something here. Wheather users want to accept file
// Check to see if the request should be accepted
if(accept) {
// Accept it
IncomingFileTransfer transfer = request.accept();
try {
transfer.recieveFile(new File(fileName));
System.out.println("File " + fileName + "Received Successfully");
//InputStream input = transfer.recieveFile();
} catch (XMPPException ex) {
Logger.getLogger(XmppManager.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
// Reject it
request.reject();
}
}
});
}
【问题讨论】:
-
为什么这个问题被否决了?无论如何,你解决了问题吗?你用哪个smack,因为看起来你没有使用最新版本的smack..
-
没有。我还没有解决问题。我使用 Smack 3.1.0。版本重要吗?
-
当然,新的 4.1 版本有许多错误修正、更大的灵活性并且已为 Android 做好了准备(这在您的情况下并不重要)。而且,我还没有让它通过文件传输发送文件。您唯一需要注意的是,如果您使用不属于您的免费 xmpp 服务器,则该服务器必须支持文件传输。并非所有服务器都这样做...
-
@Opiatefuchs 在 smack 4.1 中做了哪些类型的错误修复?
-
很多...不知道到底修复了什么,但有一些用于连接的部分。有很多人像你一样有同样的问题,转向 4.1 修复了它。请参阅此处:github.com/igniterealtime/Smack/wiki/… 以及社区内部的有用线程:community.igniterealtime.org/welcome