Android: Как извлечь некоторые данные из ответа сервера webService с помощью ksoap2 - PullRequest
0 голосов
/ 02 февраля 2012

Я хотел бы узнать, как использовать веб-сервисы с Android.На данный момент у меня есть сервер с файлом wsdl, и я могу вызвать нужный веб-сервис с.

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

Вот мой код:

public class TestBookSoapActivity extends Activity {

private static final String SOAP_ACTION = "JournalArticles";
private static final String METHOD_NAME = "JournalArticles";
private static final String NAMESPACE = "http://api.mdpi.com/ws/";
private static final String URL = "http://api.mdpi.com/ws/server.php";


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    executeAppelSOAP();  
}

private void executeAppelSOAP() {
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    request.addProperty("JournalID", 1);
    request.addProperty("Volume", 12);
    request.addProperty("Issue", 1);

    SoapSerializationEnvelope enveloppe = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    enveloppe.setOutputSoapObject(request);
    AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL);             
    try {
        androidHttpTransport.call(SOAP_ACTION, enveloppe);
        Object resultat = enveloppe.getResponse();
        System.out.println(" Journal Articles= " + resultat.toString());
    } catch(Exception e) {
        e.printStackTrace();
        System.out.println("Problem");
    }
}

Могу ли я использовать метод enveloppe.parse (), и если да, то как?

Спасибо.

1 Ответ

1 голос
/ 07 февраля 2012

Есть два шага, которые вы должны сделать:

  1. Получить правильное значение XML
  2. Разбор XML

О 1 ...
Я предпочитаю HttpTransportSE , поэтому вместо:

AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL);

использование:

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

Тогда вместо:

Object resultat = enveloppe.getResponse();    

использование:

SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
String xml = response.toString();

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

О 2 ...
Вы можете использовать любой XML-парсер. Я предпочитаю SAX по соображениям производительности. Вот пример для Android: как анализировать XML в Android

С уважением,
Драган

...