Как отправить массивы как мыльные объекты в веб-сервисах Android - PullRequest
0 голосов
/ 03 ноября 2011

Прежде всего, я должен поблагодарить StackOverflow и всех его участников за последние несколько месяцев помощи Android.Моя кривая обучения была крутой, и я не думаю, что я бы получил это далеко без вашей помощи.

Мне нужно отправить массив как мыльный объект в веб-службу, но я получаю ответ «пустой список отправленных идентификаторов» с сервера.Я надеюсь, что кто-то может сказать мне, почему.

Мой код выглядит следующим образом:

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, и они должны быть такими, какими они должны быть.Я вставляю ниже объекта мыла, как в logcat:

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

Следующее, что я делаю, это

String res = doPost(request, soapMethod);

Что может быть не так?

Res всегда содержит сообщение: пустой список отправленных идентификаторов!

Есть ли способ конвертировать его, чтобы я мог вставить его в окно браузера и посмотреть, работает ли он?Или это совершенно идиотский вопрос?

Большое спасибо,

Элейн.

1 Ответ

0 голосов
/ 04 ноября 2011

Ну ... есть много мест, где что-то может быть не так. Я попытаюсь объяснить, как обнаружить эти места и отладить ваш код:

  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, Google. Также есть плагин для eclipse). С помощью такого инструмента вы можете отправить правильный запрос на сервер и проверить, работают ли методы сервера.
  3. И ... я не уверен, но стараюсь не использовать вектор и последовательно добавлять свойства массива:

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

Надеюсь, это поможет. Удачи!

...