2011-11-03 84 views
0

首先,我必須感謝StackOverflow及其所有成員在過去幾個月中對android的幫助。我的學習曲線非常陡峭,我不認爲如果沒有你的幫助,我會得到這麼多。如何在android web服務中將數組作爲肥皂對象發送

我需要將一個數組作爲肥皂對象發送到Web服務,但不斷收到來自服務器的「空提交的ID列表」響應。我希望有人能告訴我爲什麼。

我的代碼如下:

public void FeedbackRead(String feedbackID) { 
      String soapMethod = "feedbackRead"; 
      SoapObject request = new SoapObject(NAMESPACE, soapMethod); 
      request.addProperty(getProperty("patientLogin", PATIENT_LOGIN)); 
      request.addProperty(getProperty("passwd", PATIENT_PASS)); 
      request.addProperty(getProperty("IDsRead", new String[]{feedbackID})); 
      String res = doPost(request, soapMethod);   
      Log.i(soapMethod + "SOAP_RESPONSE ", res); 
    } 

而且的PropertyInfo方法是

private PropertyInfo getProperty(String name, String[] val) { 
     PropertyInfo info = new PropertyInfo(); 
     info.name = name; 
     info.namespace = NAMESPACE; 
     info.type = PropertyInfo.VECTOR_CLASS; 
     Vector<String> vct = new Vector<String>(); 
     for (int i = 0; i < val.length; i++) 
     vct.add(val[i]); 
     info.setValue(vct); 
     return info; 
    } 

我究竟應該如何添加一個字符串數組來請求SoapObject,這樣我可以將它發送到服務器?

好的,我知道肥皂對象屬性應該是因爲我已經將它們打印到logcat,它們應該是。我粘貼SOAP對象下面按logcat的:

feedbackRead{patientLogin=patient1; passwd=pat1; IDsRead=[27d49cea-7968-457a-b377-7bd70bbca1a1, 27d49cea-7968-457a-b377-7bd70bbca1a2]; } 

接下來我要做的就是

String res = doPost(request, soapMethod); 

怎麼可能會錯誤?

Res總是包含消息:空提交的ID列表!

有什麼方法可以將其轉換爲我可以將其粘貼到我的瀏覽器窗口看它是否工作?或者這是一個完全沒有道理的問題?

非常感謝,

Elaine。

+0

附加您的getProperty方法。要發送數組,PropertyInfo的類型應該是向量,值應該是向量。 – Flavio

+0

是的,我認爲這是我編輯我的上面的帖子,所以你可以看到我的PropertyInfo。謝謝,伊萊恩。 –

回答

0

呃......有很多地方可能有錯誤。我會盡力解釋如何檢測這些地方和調試代碼:

  1. 登錄您的請求和響應是這樣的:

    HttpTransportSE androidHttpTransport = new HttpTransportSE(serverUrl); 
        androidHttpTransport.debug = true; 
    
        androidHttpTransport.call(SOAP_ACTION, envelope); 
    
        Log.d("test", "request: " + androidHttpTransport.requestDump); 
        Log.d("test", "response: " + androidHttpTransport.responseDump); 
    
  2. 比較正確的請求您的請求。要獲得正確的請求,你可能需要一些使用wsdl生成肥皂請求的工具(我使用soapUI,谷歌它也有一個eclipse的插件)。使用這樣的工具,您可以向服務器發送正確的請求,並檢查服務器的方法是否正常工作。
  3. 而且......我不知道,但儘量不要用向量,並依次加入陣列屬性:

    request.addProperty(的getProperty( 「IDsRead」,feedbackID1)); request.addProperty(getProperty(「IDsRead」,feedbackID2)); request.addProperty(getProperty(「IDsRead」,feedbackID3));

希望這會有所幫助。祝你好運!