2012-01-18 17 views
13

Provenendo da iOS Sto attraversando un periodo difficile con i servizi Web in Android. Ho passato diverse ore a provare esempi, a leggere blog e comunicare con successo con un servizio web sembra essere ancora una questione di fortuna ....Controllo busta con Ksoap2 (Android)

Bottom line e voglio essere in grado di vedere la busta che è in corso inviato. In iOS posso solo guardare il messaggio XML che verrà inviato, confrontarlo con SoapUI o qualcosa di simile e capire cosa c'è che non va. Non possiamo farlo? Prima che la chiamata restituisca l'XML a un System.out.print?

Vorrei anche fare la stessa cosa per la risposta, ottenere la semplice risposta http, perché le eccezioni Ksoap2 sono piuttosto scadenti.

Scusate se questa è una domanda piuttosto semplice, ma sto diventando un po 'frustrato :(

risposta

32

Dopo aver creato il vostro HttpTransportSE androidHttpTransport è possibile aggiungere la riga:

androidHttpTransport.debug = true; 

Dopo aver chiamato androidHttpTransport.call(SOAP_ACTION, envelope); è possibile ottenere la richiesta e la risposta in formato XML dalle due variabili String:

androidHttpTransport.requestDump; 
androidHttpTransport.responseDump; 

È possibile stampare questi valori nel registro o accedere al m all'interno della modalità di debug.

+0

Ha funzionato. Tnks – inversus

+0

Ha lavorato per me :) grazie – user1007522

+0

androidHttpTransport.requestDump dammi null – Killer

2

Utilizzare un monitor TCP/IP, ad esempio uno che viene in Eclipse (Finestra-> Mostra vista-> Debug-> Monitor TCP/IP). Direi che la stampa della busta XML non appartiene al codice, in quanto è solo per il debug. Se il tuo webservice è in ascolto sulla porta 8080, devi configurare il monitor per ascoltare sulla porta 8081 e per monitorare la porta 8080. Quindi indirizzare il client SOAP alla porta 8081. In questo modo il monitor TCP/IP riceverà l'XML, lo visualizzerà e quindi lo inoltrerà al servizio effettivo a 8080. Farà lo stesso per la risposta. Funzionerà anche SoapUI (basta puntarlo sulla porta 8081).

Problemi correlati