2010-12-14 13 views
1

Ich habe seit den letzten drei Tagen gegraben, um herauszufinden, wie man kSoap2 verwendet, um auf den Web-Service zuzugreifen. Jetzt kann ich auf den Webservice zugreifen, aber ich muss wissen, ob ich den richtigen Weg eingeschlagen habe oder ob ich die Standards verlassen habe. Ich habe vollständigen Code gepostet und ausgegeben, dass ich habe, bitte korrigieren Sie mich, wenn ich irgendwo falsch gegangen bin.Zugriff auf den WebService in Android mit kSoap2

// WebServiceConsumer.java

public SoapObject soap(String METHOD_NAME, String SOAP_ACTION, String NAMESPACE, String URL) throws IOException, XmlPullParserException { 

    /** Construction of the SoapObject */ 
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); //set up request 
    /** passing the values in to the webservice*/ 
    request.addProperty("iTopN", "0"); //variable name, value. got the variable name, from the wsdl file! 

    /** Creation of the SoapEnvelope with the appropriate version*/ 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); //put all required data into a soap envelope 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); //prepare request 
    /** Creating AndroidTransport for passing the request to the URL where the service is located*/ 
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL); 
    httpTransport.debug = true; //this is optional, use it if you don't want to use a packet sniffer to check what the sent message was (httpTransport.requestDump) 
    httpTransport.call(SOAP_ACTION, envelope); //send request 
    SoapObject result =(SoapObject)envelope.bodyIn; //get response 
    return result; 
} 

public void callService() { 
    try{ 
     SoapObject result = soap(METHOD_NAME, SOAP_ACTION, NAMESPACE, URL); 
     Log.i(TAG,"Result:" + result); 
     try { 
      // FootballScoreParser.parseBusinessObject(result.getProperty(0).toString(), footballscore); 
       SoapObject logObject = (SoapObject) result.getProperty(0); 
       Log.i(TAG,"LogObject : " + logObject); 
       for(int i = 0; i < 10 ; i++) { 
       SoapObject logger = (SoapObject) logObject.getProperty(i); 
       // Log.i(TAG,"Name : " + logger.getProperty("sName")); 
       // Log.i(TAG,"Goals : "+ logger.getProperty("iGoals")); 

       /** Appending the sName,iGoals in to ArrayList name */ 
        name.add((String)logger.getProperty("sName").toString()); 
        goals.add((String) logger.getProperty("iGoals").toString()); 
        country.add((String) logger.getProperty("sCountry").toString()); 
        flag.add((String) logger.getProperty("sFlag").toString()); 

       /** Converting the ArrayList into the Object Array*/ 
        objName = name.toArray(); 
        objGoals = goals.toArray(); 
        objCountry = country.toArray(); 
        objFlags = flag.toArray(); 
       } 
       for(int j = 0; j < objName.length; j++){ 
          Log.i(TAG,"Name ["+ j + "]=" + objName[j].toString() + "," + "Goals ["+ j + "]=" + objGoals[j].toString()+ "," + "Country[" + j + "]=" + objCountry[j].toString() + "," +"Flag[" +j+ "]=" + objFlags[j].toString()); 

         } 
       } 
     catch(Exception err){ 
      Log.i(TAG, "" + err); 
     } 


     } 
     catch(Exception err){ 
      Log.i(TAG,""+ err); 
     } 
      /* catch(NumberFormatException err){ 
      err.printStackTrace(); 
      } 
      catch(IllegalArgumentException err){ 
       err.printStackTrace(); 
      } 
      catch(IllegalAccessException err){ 
       err.printStackTrace(); 
      } 
      catch(InstantiationException err){ 
       err.printStackTrace(); 
      }*/ 
     //} 

// FootBallScrorerActivity.java

package com.project.mobile.FootballScorers; 

import android.app.Activity; 
import android.os.Bundle; 

public class FootbalScorerActivity extends Activity { 
WebServiceConsumer webconsumer; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    webconsumer = new WebServiceConsumer(); 
    webconsumer.callService(); 

} 
} 

Ausgang:

Please click here to see the Output

Jede Hilfe ist willkommen .... Vielen Dank im Voraus

Antwort

2

Nach der Ausgabe, wie es mir aussieht Ihr Webdienst gibt LogObject zurück, was bedeutet, dass es ein komplexes Objekt ist. Um mit komplexen Objekten zu arbeiten, sollten Sie dieselbe Klasse auch in Android implementieren und die KSOAP-Marshal-Schnittstelle implementieren. Danach sollten Sie Mapping zu dieser Klasse hinzufügen registrieren, damit KSOAP mit dem empfangenen Objekt umgehen kann.

Weitere Informationen über den Umgang mit komplexen Objekten mit KSOAP auf Android zu arbeiten, dieses Tutorial folgen:

KSOAP Android Web Service Tutorial with Sample Code on Complex Objects

+0

Ya, Dieser Ansatz hat mir sehr geholfen. Danke Froh zu helfen ... Ich werde meinen Code sobald es vorbei ist. Vielen Dank –

+0

Ich bin froh, dass es dir geholfen hat –

Verwandte Themen