SOAP xml взамен - Android - PullRequest
       1

SOAP xml взамен - Android

3 голосов
/ 24 марта 2011

Я использую k2SOAP для Android при работе с веб-сервисами.

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("ProjectID", 1);

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soapEnvelope.dotNet = true;
soapEnvelope.setOutputSoapObject(request);

HttpTransportSE httpTransport = new HttpTransportSE(URL);

try {

    httpTransport.call(SOAP_ACTION, soapEnvelope);
    SoapObject result = (SoapObject) soapEnvelope.getResponse();
    String resultString = result.toString();
}

Я знаю, что в коде нет ничего плохого, поскольку он работает с веб-сервисом w3. Но w3c возвращает строку в качестве ответа, этот веб-сервис возвращает XML. Ответ, который я получаю, выглядит так, когда я показываю его в журнале:

anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType{element=an    yType{complexType=anyType{sequence=anyType{element=anyType{}; 
element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{}; }; }; }; }; }; 
unique=anyType{selector=anyType{}; field=anyType{}; }; }; }; diffgram=anyType{}; }

Что, в принципе, очень шумно, и я не уверен, как получить информацию из этого или как я должен ее проанализировать или. Моя конечная цель - поместить информацию, которую я получаю, в локальную базу данных, но, поскольку я не знаю, как получить информацию из строки, которую я не знаю, поместить информацию в базу данных.

Итак, я хочу как-то разобрать информацию и поместить ее в локальную базу данных, для которой я уже создал классы. Как мне получить данные из результата SoapObject? Существует небольшая вероятность того, что информация веб-службы пуста, но мой вопрос остается прежним.

Ответы [ 3 ]

4 голосов
/ 10 октября 2011

Две вещи, которые нужно изменить

1) Добавить это "httpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");"

строка выше "httpTransport.call(SOAP_ACTION, soapEnvelope);"

2) String resultString = result.toString();

Заменить вышеприведенную строку следующей

String resultString=httpTransport.responseDump;

Будет возвращен ответ в виде отформатированной строки XML

2 голосов
/ 19 сентября 2012

Предоставленный ответ не сработал для меня, а строки ниже работали для меня. Попробуйте следующие строки, надеюсь, это даст вам данные с тегами XML,

httpTransport.debug=true; 
httpTransport.call(SOAP_ACTION, soapEnvelope);
String ss=httpTransport.responseDump; 
Log.d("Result --- ", ss);

Будет напечатан полный XML-файл, который был возвращен веб-службой.

0 голосов
/ 15 декабря 2011

Попробуйте это WAy.

try {

    httpTransport.call(SOAP_ACTION, soapEnvelope);
    SoapObject result = (SoapObject) soapEnvelope.getResponse();


String element = ((SoapObject)result.getPropertySafely("schema")).getPropertySafely("element").toString(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...