2011-07-27 44 views
0

我們有一個我們正在嘗試用於web服務通信的android應用程序。來自Android soap服務調用的奇怪迴應

我們可以成功發送請求並通過以下代碼片段獲取響應。

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    TextView textView = new TextView(this); 

    setContentView(textView); 
    //textView.setText(); 

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

    request.addProperty("foo", "bar"); 
    request.addProperty("foo", "bar"); 
    request.addProperty("foo", "bar"); 
    request.addProperty("foo", "bar"); 
    request.addProperty("foo", "bar"); 
    request.addProperty("foo", "bar"); 


    Log.w(TAG, request.toString()); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; 

    envelope.setOutputSoapObject(request); 
    envelope.encodingStyle = "utf-8"; 
    envelope.implicitTypes = false; 
    AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL); 

    try 

    { 
    httpTransport.call(SOAP_ACTION, envelope); 

    KvmSerializable ks = (KvmSerializable)envelope.bodyIn; 
    for(int i=0;i < ks.getPropertyCount();i++) 
    { 
     ks.getProperty(i); 
     SoapObject soap = (SoapObject)ks.getProperty(i); 
     String tmp = soap.getProperty(0).toString(); 
     textView.setText(tmp); 
     Log.w(TAG2, envelope.toString()); 
     Log.w(TAG3, ks.getProperty(i).toString()); 

    } 

    } 
    catch (Exception exception) 
    { 
     textView.setText(exception.toString()); 
     Log.w(TAG4, exception); 
    } 


} 

現在,從獲取的textView.setText(tmp);提出請求的響應呈現響應如下:

anyType{foo=bar;foo=bar;foo=bar;} 

儘管我們希望它回來作爲foo = bar, foo = bar

任何命中和三分球將不勝感激。提前致謝。

回答

2

如果你有這些:

SoapObject soap = (SoapObject)ks.getProperty(i); 
    String tmp = soap.getProperty(0).toString(); 

你需要使用這些:

SoapObject soap = (SoapObject)ks.getProperty(i); 
    SoapObject tmp = soap.getProperty(0); 
    String foo = tmp.getProperty(0).toString(); 

我發現您是使用複雜的類型,你應該使用HttpTransportSEAndroidHttpTransport已被棄用。

希望它有幫助

+0

這正是我們所期待的får!謝謝! – doge