如何从soap获取数据到我的android

时间:2014-03-08 19:00:37

标签: android sql eclipse soap

我构建了一个使用sql ws来获取数据的应用程序。我可以得到数据,但因为它是一个字符串,我不知道如何将它分成一些语言。

这是mt soqp rsponse

    <?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <S:Body>
        <ns2:getDataFromSqlResponse xmlns:ns2="http://myAndroidIt.gy.com/">
            <return>id- 2 first name- hanane last name- yniv
</return>
        </ns2:getDataFromSqlResponse>
    </S:Body>
</S:Envelope>

我怎样才能将id(2)放入verbals? 我想用它。

THX!

1 个答案:

答案 0 :(得分:0)

我建议您使用像ksoap2-android这样的库来调用Soap Webservices。您可以使用maven将库添加到项目中:

<dependency>
  <groupId>com.google.code.ksoap2-android</groupId>
  <artifactId>ksoap2-android</artifactId>
  <version>3.2.0</version>
</dependency>

如果你不使用maven,你可以找到jar here的下载链接。

您可以使用kso​​ap2库进行如下所示的soap调用:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);         

// Here you could add things to your request like this:
request.addProperty("parameter1", 7);
request.addProperty("parameter2", "asdf");
request.addProperty("parameter3", someChildSoapObject);

SoapSerializationEnvelope envelope = new SSoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
          
HttpTransportSE httpTransport = new HttpTransportSE(URL);
httpTransport.call(SOAP_ACTION, envelope);
SoapObject response = (SoapObject)envelope.getResponse();

获得响应对象后,可以从响应对象中解析所需的值,如下所示:

int id =  Integer.parseInt(response.getPropertySafely("id").toString());
String someOtherProperty = resonse.getPropertySafelyAsString("someProperty");

您可以找到有关如何使用kso​​ap2-android here的更多信息。

如果您不想或不能使用soap库,我建议您使用像Simple这样的序列化程序框架来反序列化String。你可以找到简单的here 我实际上曾经使用Simple编写一个小肥皂框架,因为不可能使用库,所以如果你不能使用kso​​ap2-android,我可以推荐这个。