#ksoap2 #android-ksoap2
#ksoap2 #android-ksoap2
Вопрос:
Я использую ksoap2 для связи с удаленной веб-службой. По какой-то причине свойства, которые я добавляю в SoapObject, не отправляются. Где я ошибся? Я перепробовал все, я получаю ответ, когда выполняю прямую отправку xml-запроса, но это не то, что я хочу. Я также получаю ответ от сервера, но ни одно из значений, которые я публикую, не передается. Я прочитал все существующие блоги, официальную документацию и даже связанные с SO вопросы, что я пропустил?
Вот фрагмент метода, вызываемого из doInBackground() асинхронной задачи.
public SoapObject getSoapObject() {
// Create request
SoapObject requesty = new SoapObject(NAMESPACE, METHOD_NAME);
// Add the property to request object
requesty.addProperty(getPropertyInfo("PARAMETER_1", "VALUE_1"));
// Create envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
// Set output SOAP object
envelope.setOutputSoapObject(requesty);
// Create HTTP call object
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
SoapObject soapObject = null;
try {
// Send to web service
androidHttpTransport.call(SOAP_ACTION, envelope);
soapObject = (SoapObject) envelope.getResponse();
} catch (SoapFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (HttpResponseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return soapObject;
}
private PropertyInfo getPropertyInfo(String name, String value) {
PropertyInfo propInfo = new PropertyInfo();
propInfo.setName(name);
propInfo.setValue(value);
propInfo.setType(string.class);
return propInfo;
}
Ответ №1:
Вместо того, чтобы использовать ksoap2, я опубликовал напрямую через HttpPost и вручную проанализировал различные значения с помощью пользовательского анализатора XML. Я знаю, что это может быть не лучший из вариантов, но SOAP сейчас просто старая школа.