2011-11-03 85 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));

希望这会有所帮助。祝你好运!