Código de error 503 en la transferencia de archivos mediante xmpp

Estoy intentando enviar un archivo de imagen usando smack y openfire xmpp. Para esto estoy usando la clase FileTransferManager. Para usar la clase FileTransferManager estoy usando asmack-android-6.jar . Seguí este enlace para compartir archivos. Este problema también se comparte en los comentarios de este tutorial pero no se da una buena resolución a este problema. Luego he buscado sobre el desbordamiento de pila, muchos desarrolladores han hecho esta pregunta, pero sólo 1-2 tienen respuestas que han aceptado, otros no.

He estudiado todas las respuestas que he encontrado, probado todas las formas que google me dio, pero aún no puede resolver este problema.

El código que usé es:

d.findViewById(R.id.btnsendphoto).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (!filepath.equals("")) { ServiceDiscoveryManager sdm = ServiceDiscoveryManager .getInstanceFor(connection); if (sdm == null) { sdm = new ServiceDiscoveryManager( connection); Log.e("service discovery", "SDM"); sdm.addFeature("http://jabber.org/protocol/disco#info"); sdm.addFeature("jabber:iq:privacy"); } mFileTransferManager = new FileTransferManager( connection); /* * OutgoingFileTransfer transfer = * mFileTransferManager * .createOutgoingFileTransfer * ("98c6d889473a6fae@pc/Smack"); */ String to = connection.getRoster() .getPresence("98c6d889473a6fae@pc") .getFrom(); OutgoingFileTransfer transfer = mFileTransferManager .createOutgoingFileTransfer(to); File file = new File(filepath); try { //[configureProviderManager](http://paste.ubuntu.com/9932239/) configureProviderManager(connection); transfer.sendFile(file, "test_file"); } catch (XMPPException e) { e.printStackTrace(); } while(!transfer.isDone()) { Log.d("status", transfer.getStatus().toString()); Log.d("percent", new Long(transfer.getBytesSent()).toString()); if (transfer.getStatus() == Status.error) { Log.e("percent", "Error " + new Long(transfer.getBytesSent()).toString() + " " + transfer.getError() + " " + transfer.getException()); transfer.cancel(); } if(transfer.getStatus().equals(Status.refused)) System.out.println("refused " + transfer.getError()); else if( transfer.getStatus().equals(Status.error)) System.out.println(" error " + transfer.getError()); else if(transfer.getStatus().equals(Status.cancelled)) System.out.println(" cancelled " + transfer.getError()); else System.out.println("Success"); } } d.dismiss(); } }); 

El logcat que conseguí es muy grande, así que le di un enlace de eso. Así que puede alguien decir cuál es el error que estoy haciendo o puede sugerir qué enmienda hago para lograr la tarea

Este problema se resolvió con este enlace respuesta no sé por qué su downvoted. Lemme compartir respuesta aquí también

 d.findViewById(R.id.btnsendphoto).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (!filepath.equals("")) { ServiceDiscoveryManager sdm = ServiceDiscoveryManager .getInstanceFor(connection); if (sdm == null) { sdm = new ServiceDiscoveryManager( connection); Log.e("service discovery", "SDM"); sdm.addFeature("http://jabber.org/protocol/disco#info"); sdm.addFeature("jabber:iq:privacy"); } configureProviderManager(connection); FileTransferNegotiator.IBB_ONLY = true; FileTransferNegotiator.setServiceEnabled(connection, true); mFileTransferManager = new FileTransferManager( connection); /* * OutgoingFileTransfer transfer = * mFileTransferManager * .createOutgoingFileTransfer * ("98c6d889473a6fae@pc/Smack"); */ String to = connection.getRoster() .getPresence("98c6d889473a6fae@pc") .getFrom(); final OutgoingFileTransfer transfer = mFileTransferManager .createOutgoingFileTransfer(to); File file = new File(filepath); try { configureProviderManager(connection); transfer.sendFile(file, "test_file"); } catch (XMPPException e) { e.printStackTrace(); } new AsyncTask<Void, Void, Void>() { protected void onPreExecute() { } @Override protected Void doInBackground(Void... params) { 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.getFileName()); } }; }.execute(); } d.dismiss(); } }); 
  • GCM: cómo evitar el estrangulamiento
  • Android File Transfer no funciona a través de XMPP y OpenFire
  • Cómo obtener DiscussionHistory para MultiUserChat habitación usando aSmack?
  • No se puede autenticar en el servidor GCS CCS
  • No se puede recibir el archivo usando asmack y xmpp
  • Android y XMPP: Soluciones disponibles actualmente
  • ¿Cómo puedo almacenar el historial de chat en Android
  • XMPP presencia Suscripción
  • ¿Cómo usar Smack 4.2 para conectarse a ejabberd?
  • ¿Cómo obtener la marca de tiempo del mensaje xmpp entrante?
  • No se puede crear una sala de chat multiusuario (MUC) con la biblioteca aSmack para Android: "packet.DefaultPacketExtension no se puede convertir en paquete.MUCUser"
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.