我如何可以通过嵌套XML标记数据皂基服务机器人 [英] how can i pass data for nested xml tag for soap base service android

查看:114
本文介绍了我如何可以通过嵌套XML标记数据皂基服务机器人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要传递的数据为皂基服务嵌套的XML标记。但它给我的错误的XML文件。在code下面给出...

 的SOAPAction:http://mobile.expenseanywhere.com/verifyLogin < XML版本=1.0编码=UTF-8&GT?;
   <肥皂:信封的xmlns:XSI =htt​​p://www.w3.org/2001/XMLSchema-instance的xmlns:XSD =htt​​p://www.w3.org/2001/XMLSchema中的xmlns:SOAP = http://schemas.xmlsoap.org/soap/envelope/\">
 <肥皂:身体与GT;
   < verifyLogin的xmlns =htt​​p://mobile.expenseanywhere.com/>
   <&的authToken GT;
    < CorporateId>串LT; / CorporateId>
    <用户名>串LT; /用户名>
    <密码和GT;串LT; /密码>
  < /&的authToken GT;
  < / verifyLogin>
 < / SOAP:身体与GT;
< / SOAP:信封>

和我的code是:

  {尝试
               SoapObject要求=新SoapObject空间(namespace,METHOD_NAME);               PI的PropertyInfo =新的PropertyInfo();
               pi.setName(的authToken);
               pi.setValue(新SoapObject空间(namespace,METHOD_NAME)
                .addProperty(CorporateId,MayDemo2011)
                .addProperty(用户名,wildnet)
                .addProperty(密码,Iphone123)
                );
               request.addProperty(PI);               SoapSerializationEnvelope信封=新SoapSerializationEnvelope(SoapEnvelope.VER11);
               envelope.dotNet = TRUE;
               envelope.bodyOut =请求;
               envelope.encodingStyle = SoapSerializationEnvelope.XSI;
               envelope.setOutputSoapObject(请求);               androidHttpTransport.call(SOAP_ACTION,信封);
               对象result = envelope.getResponse();
}

和误差

  07-20 18:55:45.613:WARN / System.err的(1164)的SOAPFault  - 故障code:香皂:客户端faultstring:服务器无法读取请求。 --->有XML文档(1,346)的一个错误。 --->指定的类型无法识别:名称='verifyLogin',空间=的http://mobile.expenseanywhere.com/',AT<的authToken的xmlns =HTTP://mobile.expenseanywhere.com/'> ;. faultactor:'空'的细节:org.kxml2.kdom.Node@405a4608
   07-20 18:55:45.623:WARN / System.err的(1164):在org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:112)
   07-20 18:55:45.632:WARN / System.err的(1164):在org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:137)
    07-20 18:55:45.642:WARN / System.err的(1164):在org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
  07-20 18:55:45.642:WARN / System.err的(1164):在org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
     07-20 18:55:45.642:WARN / System.err的(1164):在soap.sdjfh.dj.verification $ 1.onClick(verification.java:59)


解决方案

尝试了这一点:

  SoapObject要求=新SoapObject空间(namespace,METHOD_NAME);PI的PropertyInfo =新的PropertyInfo();
pi.setName(的authToken);
pi.setValue(新SoapObject空间(namespace,METHOD_NAME)
   .addProperty(CorporateId,MayDemo2011)
   .addProperty(用户名,wildnet)
   .addProperty(密码,Iphone123)
   );
request.addProperty(PI);SoapSerializationEnvelope信封=新SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = TRUE;
envelope.setOutputSoapObject(请求);
AndroidHttpTransport androidHttpTransport =新AndroidHttpTransport(URL);
androidHttpTransport.call(SOAP_ACTION,信封);
结果= envelope.getResponse();

I want to pass data for nested xml tag for soap base service. But it is giving error my xml file. The code is given below ...

 SOAPAction: "http://mobile.expenseanywhere.com/verifyLogin"

 <?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>
   <verifyLogin xmlns="http://mobile.expenseanywhere.com/">
   <AuthToken>
    <CorporateId>string</CorporateId>
    <Username>string</Username>
    <Password>string</Password>
  </AuthToken>
  </verifyLogin>
 </soap:Body>
</soap:Envelope>

And my code is:

try {


               SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

               PropertyInfo pi = new PropertyInfo();
               pi.setName("AuthToken");
               pi.setValue(new SoapObject(NAMESPACE,METHOD_NAME)
                .addProperty("CorporateId","MayDemo2011")
                .addProperty("Username","wildnet")
                .addProperty("Password","Iphone123")
                );
               request.addProperty(pi);

               SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
               envelope.dotNet = true;
               envelope.bodyOut = request;
               envelope.encodingStyle = SoapSerializationEnvelope.XSI;
               envelope.setOutputSoapObject(request);

               androidHttpTransport.call(SOAP_ACTION, envelope);
               Object result = envelope.getResponse();
}

and error is

   07-20 18:55:45.613: WARN/System.err(1164): SoapFault - faultcode: 'soap:Client' faultstring: 'Server was unable to read request. ---> There is an error in XML document (1, 346). ---> The specified type was not recognized: name='verifyLogin', namespace='http://mobile.expenseanywhere.com/', at <AuthToken xmlns='http://mobile.expenseanywhere.com/'>.' faultactor: 'null' detail: org.kxml2.kdom.Node@405a4608
   07-20 18:55:45.623: WARN/System.err(1164):     at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:112)
   07-20 18:55:45.632: WARN/System.err(1164):     at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:137)
    07-20 18:55:45.642: WARN/System.err(1164):     at org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
  07-20 18:55:45.642: WARN/System.err(1164):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
     07-20 18:55:45.642: WARN/System.err(1164):     at soap.sdjfh.dj.verification$1.onClick(verification.java:59)

解决方案

Try this out:

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

PropertyInfo pi = new PropertyInfo();
pi.setName("AuthToken");
pi.setValue(new SoapObject(NAMESPACE,METHOD_NAME)
   .addProperty("CorporateId","MayDemo2011")
   .addProperty("Username","wildnet")
   .addProperty("Password","Iphone123")
   );
request.addProperty(pi);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
result = envelope.getResponse();

这篇关于我如何可以通过嵌套XML标记数据皂基服务机器人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆