2012-06-07 1 views
0

Мне нужно получить доступ к веб-сервису .NET в моем приложении для Android. Я сделал это, используя библиотеку ksoap2. Я установил соединение и все, но я не могу вернуть данные из службы. Служба должна отправить обратно набор значений. Как поймать эти значения?Получить несколько значений из веб-сервиса с помощью ksoap2 Android

Это мой код Java для доступа к веб-сервису.

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
    SoapSerializationEnvelope envelope = 
     new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); 


    AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL); 

    try { 
     androidHttpTransport.call(SOAP_ACTION, envelope); 

     //code to get back the values here. This is my doubt. 
        //What code do I write here to get the values from the service ? 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

И это формат ответа от службы.

HTTP/1.1 200 OK 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <GetControlResponse xmlns="http://tempuri.org/"> 
     <GetControlResult> 
    <Id>int</Id> 
    <Belt>boolean</Belt> 
    <Lighting>boolean</Lighting> 
    <AutoSpeed>boolean</AutoSpeed> 
    <ManualSpeed>short</ManualSpeed> 
    <Projector>boolean</Projector> 
    <ProjecterPattern>short</ProjecterPattern> 
    </GetControlResult> 
</GetControlResponse> 
</soap:Body> 
</soap:Envelope> 

ответ

2

Проверьте this 1. Это хороший учебник для доступа к веб-сервису ksoap2 в Android.

+0

В этом руководстве используется сервис, который возвращает только одно значение. Мне нужно получить несколько значений из моего сервиса. Я не могу ответить response.toString(), так как мой ответ будет состоять из разных значений. – Swayam

0

Вы можете сделать эту работу, используя этот код:

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.dotNet = true; 
envelope.setOutputSoapObject(request); 
System.out.println(request); 
envelope.encodingStyle = SoapSerializationEnvelope.XSD; 
HttpTransportSE httpTransportSE = new HttpTransportSE(URL); 
httpTransportSE.debug = true; 
try { 
    httpTransportSE.call(SOAP_ACTION, envelope); 

} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (XmlPullParserException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

String ss = httpTransportSE.requestDump; 
Log.d("Result", ss); 
System.out.println(ss); 

 Смежные вопросы

  • Нет связанных вопросов^_^