2010-12-14 15 views
1

WebサービスにアクセスするためにkSoap2を使用する適切な方法を見つけるために、ここ3日間は掘り下げています。今私はWebサービスにアクセスすることができますが、私は正しい方法に従ったか、標準から外れたかを知る必要があります。私はどこに間違っていた場合、完全なコードと出力を私が持っている、私を修正してください、投稿しました。kSoap2を使用してandroidでWebServiceにアクセス

// 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(); 

} 
} 

出力:任意のヘルプは高く評価され

Please click here to see the Output

....アドバンス

答えて

2

のおかげでは、出力によると、それは次のように私には見えますWebサービスはLogObjectを返します。つまり、複雑なオブジェクトです。複雑なオブジェクトを操作するには、Androidでも同じクラスを実装し、KSOAP Marshalインターフェイスを実装する必要があります。その後、KSOAPが受信したオブジェクトをどのように処理するかを知るために、そのクラスにマッピングの追加を登録する必要があります。このチュートリアルに従う、Android上でKSOAPで複雑なオブジェクトを操作する方法の詳細については

KSOAP Android Web Service Tutorial with Sample Code on Complex Objects

+0

雅は、このアプローチは私をたくさん助けました。おかげさまでよろしくお願いいたします...私は自分のコードを一度投稿します。ありがとうございました –

+0

私はそれがあなたを助けてうれしいです –

関連する問題