如何在android web服务中将数组作为soap对象发送

时间:2011-11-03 12:17:20

标签: android arrays object soap response

首先,我要感谢StackOverflow及其所有成员过去几个月的android帮助。我的学习曲线很陡峭,我没有想到没有你的帮助我会走得这么远。

我需要将一个数组作为soap对象发送到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中,以便将其发送到服务器?

好的,我知道soap对象属性是应该的,因为我已经将它们打印到logcat,它们应该是。我按照logcat粘贴在soap对象下面:

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

我接下来要做的是

String res = doPost(request, soapMethod);

可能出现什么问题?

Res始终包含消息:空提交的ID列表!

有没有办法转换它,所以我可以将它粘贴到我的浏览器窗口,看它是否有效?或者这是一个完全愚蠢的问题?

非常感谢,

伊莱恩。

1 个答案:

答案 0 :(得分: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生成soap请求的工具(我使用soapUI,google它。还有一个eclipse插件)。使用此类工具,您可以向服务器发送正确的请求,并检查服务器的方法是否有效。
  3. 并且......我不确定但是尝试不使用向量并按顺序添加数组属性:

    request.addProperty(getProperty(“IDsRead”,feedbackID1)); request.addProperty(getProperty(“IDsRead”,feedbackID2)); request.addProperty(getProperty(“IDsRead”,feedbackID3));

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