KSOAP non ha mai timeout

Sto utilizzando ksoap2 2.5.4 (su Android 2.2) che support il timeout. Sto utilizzando Apache 2.2.16 per gestire le mie richieste. Tutto funziona bene, ma quando chiudo il mio Apache (o scollego il PC remoto su cui Apache è in esecuzione) la chiamata non esce mai. Sto usando thread separato per call il mio WS e questo thread smette di funzionare / rispondere / bancarelle per circa 2 minuti in questo caso.

int MSG_TIMEOUT = 15000; HttpTransportSE httpTransport; SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); httpTransport = new HttpTransportSE(URL, MSG_TIMEOUT); httpTransport.debug = true; httpTransport.call(SOAP_ACTION, envelope);//thread stops responding here 

Ho anche cercato di utilizzare Timer per annullare quel thread dopo un tempo di predefinito, ma non funzionava. La discussione è ancora lì ed è in attesa di 2 minuti.

  • Utilizzo di AsyncTask con il passaggio di un valore
  • Come posso recuperare una particolare colonna da SQLite in android?
  • Come aggiornare i widget da un servizio?
  • ANDROID: Come get l'accesso di root in un'applicazione Android?
  • Come filtrare un object di selezione contatti in base al tipo di account
  • Rendere un'app in modo visualizzato come uno schermo di block Android?
  •  TimerTask task; Timer mTimer; task = new TimerTask() { public void run() { mThread.interrupt(); } }; mTimer = new Timer(); mTimer.schedule(task, MSG_TIMEOUT); 

    Ho anche questo avviso che potrebbe avere qualcosa a che fare con esso (non so cosa fare con esso):

     Dx warning: Ignoring InnerClasses attribute for an anonymous inner class (org.ksoap2.transport.KeepAliveHttpsTransportSE$1) that doesn't come with an associated EnclosingMethod attribute. This class was probably produced by a compiler that did not target the modern .class file format. The recommended solution is to recompile the class from source, using an up-to-date compiler and without specifying any "-target" type options. The consequence of ignoring this warning is that reflective operations on this class will incorrectly indicate that it is *not* an inner class. 

    C'è la possibilità di fare funzionare KSOAP o di migliorare il timer per interrompere quel thread dopo un timeout predefinito? Grazie per la risposta o qualsiasi idea di cosa provare!

  • onSaveInstanceState non viene chiamato
  • Extra di intenti vuoto in onActivityResult
  • come distriggersre una scheda nello schermo android?
  • Ottenere il conto ricevente da e-mail inviato in Android
  • Query di Android SQLite - Ottieni i 10 record più recenti
  • rendere il libro epub in android?
  • 4 Solutions collect form web for “KSOAP non ha mai timeout”

    Usa la versione 2.5.2 o superiore di ksoap2 API.

    Puoi scaricarlo cliccando qui

    E utilizzare il codice riportto di seguito mentre si fa object di HTTPTransport.

     /** * Creates instance of HttpTransportSE with set url * * @param url * the destination to POST SOAP data */ public HttpTransportSE(String url) { super(url); } /** * Creates instance of HttpTransportSE with set url * * @param url * the destination to POST SOAP data * @param timeout * timeout for connection and Read Timeouts (milliseconds) */ public HttpTransportSE(String url, int timeout) { super(url, timeout); } 

    Hai scaricato la fonte e poi hai compilato? Oppure hai usato un file JAR finito? Proverò questa sera o domani presto la mattina.

    Ho lo stesso problema di eseguire ksoap2-android-assembly-2.5.6-jar-con-dependencies. Avrei assunto che il valore di timeout ksoap visualizzato su HttpTransportSE sarebbe equivalente a quello che si può get utilizzando org.apache.http.client.HttpClient con timeout di connessione e socket timeout:

    Client HttpClient = nuovo DefaultHttpClient (); HttpParams params = client.getParams (); HttpConnectionParams.setConnectionTimeout (params, CONNECTION_TIMEOUT); HttpConnectionParams.setSoTimeout (params, SOCKET_TIMEOUT);

    Ho finalmente ottenuto un'operazione di SocketException "l'operazione interrotta" dopo ~ 3 minuti non import quale valore ho inserito nel parametro timout su HttpTransportSE. Il mio server è in esecuzione, non rispondendo semplicemente alla richiesta.

    Questo sembra ancora un problema aperto con HttpTransportSE ignorando il valore di timeout in alcune situazioni. Vedi relativi:

    http://code.google.com/p/ksoap2-android/issues/detail?id=52

    http://code.google.com/p/ksoap2-android/issues/detail?id=60&q=httpTransportse%20timeout

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.