【问题标题】:File transfer using Smack 4.2.3 gives service-unavailable error使用 Smack 4.2.3 传输文件时出现服务不可用错误
【发布时间】:2018-08-02 21:11:16
【问题描述】:

我正在使用 smack 4.2.3 开发 XMPP 客户端。在 linux 平台上使用 ejabberd 作为 XMPP 服务器。 使用以下代码发送文件:

public static void sendFile(String path, String description){
String sFqdn = currentUser.getFqdn();
if(sFqdn.equals(null)) return;
String node = XmppStringUtils.parseLocalpart(sFqdn);
String domain = XmppStringUtils.parseDomain(sFqdn);
String resource = XmppStringUtils.parseResource(sFqdn);

    try {
        EntityFullJid fqdn = entityFullFrom(node, domain, resource);
        OutgoingFileTransfer transfer = FileTransferManager.getInstanceFor(connection).createOutgoingFileTransfer(fqdn);
        transfer.sendFile(new File(path), description);
    } catch (SmackException e) {
        e.printStackTrace();
    } catch (XmppStringprepException e) {
        e.printStackTrace();
    }

}

并接收:

if(fileTransferManager == null){
fileTransferManager = FileTransferManager.getInstanceFor(connection);
fileTransferManager.addFileTransferListener(new FileTransferListener() {
@Override
public void fileTransferRequest(final FileTransferRequest request) {
// Accept it

            IncomingFileTransfer transfer = request.accept();
            try {
                transfer.recieveFile(new File(dir_path+request.getFileName()));
            } catch (SmackException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
                }
            });
            }
        });
    }

有时它会在用户之间成功发送文件,但大多数时候我会收到此 XMPP 错误:

D/SMACK: RECV (1): 测试文件

D/SMACK: SENT (1):

在 ejabberd 配置文件中,我已成功启用模块“mod_proxy65”

我能想到的一个原因是,它可能是由于接收器改变了连续存在而发生的,这改变了它的资源。 虽然我在 Roster 的 presentChanged() 方法中跟踪存在,但仍然没有成功。我想知道 smack 中是否有任何方法可以使用静态资源连接到服务器?

还有一点,有没有 HTTP_FILE_UPLOAD (XEP-0363) 的示例,我在 smacks 官方文档中找不到。

【问题讨论】:

    标签: android xmpp ejabberd smack


    【解决方案1】:

    在 ignite realtime 的论坛上讨论后,我发现我点击了bug

    解决此错误的方法是强制带内字节流。

    FileTransferNegotiator.IBB_ONLY 设置为true 对我有用。

    请查看FileTransferNegotiator 类中的第 76 行。

    【讨论】:

      猜你喜欢
      • 2015-09-27
      • 1970-01-01
      • 2016-10-28
      • 2011-08-28
      • 1970-01-01
      • 2012-04-11
      • 2014-12-02
      • 1970-01-01
      • 2021-08-27
      相关资源
      最近更新 更多