Я много искал, но не нашел никакой помощи, поэтому я надеюсь, что кто-то может пролить свет на этот вопрос.Android KSoap2 Ответ от массива сервера пуст
Я хочу послать массив с помощью KSoap и я делаю это следующим образом:
Сначала я создать объект мыло, как это:
SoapObject request = new SoapObject(GENERICNAMESPACE, SOAP_METHOD_NAME);
PropertyInfo attr = new PropertyInfo();
attr.name = "patientLogin";
attr.type = PropertyInfo.STRING_CLASS;
attr.namespace = GENERICNAMESPACE;
attr.setValue(patientId);
request.addProperty(attr);
//could be patientPassword
attr = new PropertyInfo();
attr.name = "passwd";
attr.type = PropertyInfo.STRING_CLASS;
attr.namespace = GENERICNAMESPACE;
attr.setValue(patientPassword);
request.addProperty(attr);
Vector vectorOfIDsRead = new Vector();
vectorOfIDsRead.addElement(idsRead);
attr = new PropertyInfo();
attr.name = "IDsRead";
attr.type = PropertyInfo.STRING_CLASS;
attr.namespace = GENERICNAMESPACE;
attr.setValue(vectorOfIDsRead);
request.addProperty(attr);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER10);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(GENERICURL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(GENERICSOAP_ACTION_URL+"feedbackRead", envelope);
SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope
.getResponse();
//log request
Log.e("SendFeedbackRead", "/////////////////////RequestDump////////////////////");
Log.e("SendFeedbackRead", androidHttpTransport.requestDump.toString());
Log.e("SendFeedbackRead", "/////////////////////////////////////////");
//log request
Log.e("SendFeedbackRead", "///////////////////ResponseDump/////////////////");
Log.e("SendFeedbackRead", androidHttpTransport.responseDump.toString());
Log.e("SendFeedbackRead", "/////////////////////////////////////////");
Log.e("FeedbackRead",
"FeedbackRead : " + resultsRequestSOAP.toString());
return resultsRequestSOAP.toString();
} catch (Exception e) {
Log.e("FeedbackRead", "SENDFEEDBACKREAD : " + e);
return e.getMessage();
}
Запрос свалка показывает, что я посылаю:
<v:Envelope xmlns:i="http://www.w3.org/1999/XMLSchema-instance" xmlns:d="http://www.w3.org/1999/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"><v:Header />
<v:Body>
<n0:feedbackRead id="o0" c:root="1" xmlns:n0="http://testing.starburst.com/GenericWS">
<n0:patientLogin i:type="d:string">patient1</n0:patientLogin>
<n0:passwd i:type="d:string">pat1</n0:passwd>
<n0:IDsRead i:type="c:Array" c:arrayType="d:anyType[1]"><item i:type="d:string">1234test</item></n0:IDsRead></n0:feedbackRead>
</v:Body>
</v:Envelope>
Но ответ, который я получаю, указывает, что список пуст.
обратная связьНаписать пустой список идентификаторов!
Это не так, как есть одно значение.
Может ли кто-нибудь указать мне в правильном направлении?
Спасибо.
Спасибо за ваш вклад. Я попытался изменить различия, которые вы сделали в моем коде, но это не помогло, после чего я последовал за учебником. Опять же, никакого результата. Имя метода - SOAP_METHOD_NAME = "feedbackRead". –
Зачем возникает эта ошибка? Для меня очевидно, что вектор не пуст. Каковы причины, по которым сервер не видит этого? Ответ был изменен, чтобы показать, какой список идентификаторов соответствует серверу: 04-03 19: 22: 17.082: E/SendFeedbackRead (18129):<обратная связьRead_Result> feedbackRead, пустой отправленный список идентификаторов! имеет эти значения , который не является списком идентификаторов. Я думаю, что ответ на мою проблему лежит там. –
По сигнатуре метода я имею в виду количество и типы параметров метода «feedbackRead». (Извините за мой английский). Я не знаю другого способа передать массив. –