2012-01-07 5 views
6

Sono molto nuovo per lo sviluppo di app Android. Nella mia nuova app per Android voglio mostrare alcuni dati dal webservice. Questo significa che ho un SOAP message, ho bisogno di analizzare i dati dalla risposta SOAP. Nell'app per iPhone sapevo molto bene di analizzare la risposta al messaggio SOAP ma, in Android, non so come farlo? Ho cercato molto su Google e ho trovato alcune idee. Ma sono molto confuso su questo. Qualcuno può suggerire qualsiasi modo più semplice per comprendere la richiesta di invio SOAP/ricevere risposta e analizzare (XML format) la risposta in SAXParser in Android? Ho installato ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar nel mio progetto. Qui ho trovato qualche codice di esempio, che pubblico qui,Come inviare la richiesta SOAP e la risposta SOAP Parse in formato XML in Android?

import java.io.*; 
import org.ksoap2.SoapEnvelope; 
import org.kxml2.io.KXmlParser; 
import org.xmlpull.v1.XmlPullParserException; 


public class ParsingSteps 
{ 
    public static void main(String[] args) 
    { 
     try{ 
      // String msg="<hello>World!</hello>"; 
       String msg = "<SOAP-ENV:Envelope " + "xmlns:SOAP-ENV=\"http:// 
www.w3.org/2001/12/soap-envelope\" " + "xmlns:xsi=\"http://www.w3.org/ 
2001/XMLSchema-instance <http://www.w3.org/%0A2001/XMLSchema-instance>\"" 
+"xmlns:xsd=\"http://www.w3.org/2001/ 
XMLSchema\"& gt;" + 
        "<SOAP-ENV:Body>" + 
        "<result>" + 
        "<message xsi:type=\"xsd:string\">Hello World</message>" + 
        "</result>" + 
        "</SOAP-ENV:Body>" + 
        "</SOAP-ENV:Envelope>"; 

     //  byte[] in= msg.getBytes(); 

       KXmlParser parser=new KXmlParser(); 
       parser.setInput(new StringReader(msg)); 
      SoapEnvelope soapenvelope= new SoapEnvelope 
(SoapEnvelope.VER12); 
       //soapenvelope.parse(parser); 
       soapenvelope.parseBody(parser); 

         } 
       catch (IOException e) { 
              System.out.println("Error reading URI: " + e.getMessage()); 
     } catch (XmlPullParserException e) { 
             System.out.println("Error in parsing: " + e.getMessage()); 
       } 
     //  String result=parser.getName(); 
       //System.out.println(result); 
   } 
} 

È questo codice corretto. Si prega di dare qualche suggerimento sulla mia domanda. Per favore aiutami su questo. Grazie in anticipo.

risposta

5


Google per il tutorial di Ksoap2 ne otterrete molti. Ecco un codice di esempio per l'invio della richiesta al servizio web.

public class WebServicePoc extends Activity{ 
private static final String SOAP_ACTION = "http://tempuri.org/Arnoid"; 
private static final String METHOD_NAME = "Arnoid"; 
private static final String NAMESPACE = "http://tempuri.org/"; 
private static final String URL = "http://ipaddress:port/UserAuthenticationInterfacer.asmx"; 
EditText editText; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    HashMap<String, String> a=new HashMap<String, String>(); 
    try { 

     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
     request.addProperty("FOSID", "1994"); 
     request.addProperty("IMEINumber", ""); 
     request.addProperty("SIMCardNo", ""); 
     request.addProperty("ApplicationName", "App"); 
     request.addProperty("CurrentVersion", "1.0.0.0"); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet=true; 
     envelope.setOutputSoapObject(request); 
     AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL); 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
     SoapObject result = (SoapObject)envelope.getResponse(); 
     editText=(EditText)findViewById(R.id.text1); 
     editText.setText(result.toString()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

E per xml assegno pls tutorial per parser XML, usare solo SAX, come STAX non è supportato in Android. Per l'invio della richiesta xml puoi inviare xml come stringa e quindi decodificare sul lato sever.

+0

Grazie mille per la risposta. Incorporerò il tuo pensiero nel mio progetto Voglio il tuo aiuto in futuro. Grazie. – Gopinath

+0

Come @Gopinath hai impostato la proprietà per inviare il messaggio giusto? – arniotaki