2012-06-07 69 views
0

我需要在我的android应用程序中访问.NET webservice。我用ksoap2库做了它。我建立了连接和一切,但我无法从服务中获取数据。该服务应该发回一组值。我如何捕获这些价值?使用kso​​ap2从Web服务获取多个值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一。它是一个很好的教程,用于访问android中的ksoap2 web服务。

+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); 
相关问题