2010-12-14 77 views
1

Je creuse depuis trois jours pour trouver la manière appropriée d'utiliser kSoap2 pour accéder au service Web. Maintenant, je suis en mesure d'accéder au service Web, mais j'ai besoin de savoir, si j'ai suivi la bonne voie ou je suis sorti des normes. J'ai posté le code complet et la sortie que j'ai, s'il vous plaît corrigez-moi, si je me suis trompé n'importe où.Accéder au WebService dans Android à l'aide de 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(); 

} 
} 

Sortie:

Please click here to see the Output

Toute aide est appréciée .... Merci à l'avance

Répondre

2

Selon la sortie, il me semble que votre service Web renvoie LogObject, ce qui signifie qu'il s'agit d'un objet complexe. Pour travailler avec des objets complexes, vous devez également implémenter la même classe dans Android et implémenter l'interface KSOAP Marshal. Après cela, vous devez vous inscrire Ajouter un mappage à cette classe afin que KSOAP sache comment gérer l'objet reçu.

Pour plus d'informations sur la façon de travailler avec des objets complexes avec KSOAP sur Android, suivez ce tutoriel:

KSOAP Android Web Service Tutorial with Sample Code on Complex Objects

+0

Ya, Cette approche m'a beaucoup aidé. Merci Glad pour l'aide ... je vais poster mon code une fois terminé. Merci beaucoup –

+0

Je suis content que ça vous a aidé –