Как отправить файлы с помощью Smack? - PullRequest
0 голосов
/ 07 октября 2010

Я борюсь с этим кодом:

FileTransferManager manager = new FileTransferManager(connection)

OutgoingFileTransfer transfer = manager.createOutgoingFileTransfer("gmailusername@gmail/Smack");


try { 
  System.out.println("000"); 
  transfer.sendFile(new File("D:/cow.wav"), "Moo !"); 
  System.out.println("111"); 

  while(!transfer.isDone()) { 
    System.out.println(transfer.getProgress() + " is done!");    
    //System.out.println(transfer.getStreamID() + " is done!"); 

    try { 
      Thread.sleep(1000); 
    } 
    catch (InterruptedException e) { 
      // TODO Auto-generated catch block e.printStackTrace(); 
    }
  } 
} 
catch (XMPPException e) { 
  // TODO Auto-generated catch block e.printStackTrace(); 
}

Похоже, он не может отправить файл.

Может кто-нибудь помочь мне решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 08 октября 2010

Я считаю, что Gmail (судя по вашему коду выше) не поддерживает передачу файлов. Смотрите это . Вы также можете отправить disco#item и disco#info, чтобы проверить, поддерживает ли он какой-либо тип прокси-потока байтов. Однако некоторые серверы, такие как jabber.org, не возвращают disco#info для прокси.

Для запросов к службам XMPP см. Мой блог .

0 голосов
/ 03 мая 2011

Мы обнаружили, что SMACK имеет тенденцию добавлять спецификатор приложения "/ smack" после входа в систему. Если вы используете вышеупомянутые методы, вы должны увидеть это. Как ни странно, это не влияет на сообщения, но влияет на передачу файлов

0 голосов
/ 16 декабря 2010

Вы не ввели полный идентификатор получателя. Получить его, используя

myRoster.getRoster().getPresence(entry).getFrom()

Затем выполните передачу и убедитесь, что получатель использует XMPP, а также не использует gtalk, поскольку его передача файлов отличается от XMPP.

...