Android中的反编组肥皂响应
问题描述:
我有两个应用程序,客户端应用程序(移动应用程序),具有Java编程语言的服务器应用程序。 我已经使用jaxb来编组我的自定义列表。Android中的反编组肥皂响应
Keyword objKeyword=new Keyword();
objKeyword.setKeywordList(keywordList); //keywordList=new ArrayList<Keyword>();
JAXBContext jc = JAXBContext.newInstance(Keyword.class);
Marshaller mar = jc.createMarshaller();
mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
sw = new StringWriter();
mar.marshal(objKeyword, sw);
我正在通过书面下列代码行我的Android应用程序的响应,
// Create request by specifying Namespace and Operation Name
SoapObject request = new SoapObject(WSDL_NAMESPACE, "getList");
// Creating envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
// Setting output SOAP object
envelope.setOutputSoapObject(request);
// Creating HTTP call object
HttpTransportSE androidHttpTransport = new HttpTransportSE(WSDL_URL);
// Invoking web service
androidHttpTransport.call(WSDL_NAMESPACE + "getList", envelope);
// Getting the response
SoapObject response = (SoapObject) envelope.bodyIn;
在我的回应我得到在下面的格式我的自定义列表,
<My_list>
<keyList>
<id>1</id>
<name>Key1</name>
</keyList>
<keyList>
<id>2</id>
<name>Key2</name>
</keyList>
</My_list>
现在,我想在我的android客户端应用程序中解组肥皂响应。 我读过JAXB不能与android一起使用,而是可以完成使用SAX解析器的XML解析。
请帮忙。
答
没有必要来解读它, 我可以使用的代码下面一行得到我回应的完整列表,
// Getting the response
SoapObject response = (SoapObject) envelope.bodyIn;
然后,我可以用得到的表计数值,
int iResponseCount=response.getPropertyCount();
并随后与
List<Keys> lstKeys=new ArrayList<Keys>();
for (int i = 0; i < iResponseCount; i++) {
SoapObject responseKey =(SoapObject) response.getProperty(i);
Keys objKeys =new Keys();
objKeys.setId(responseKey.getProperty(0).toString());
objKeys.setName(responseKey.getProperty(1).toString());
lstKeys.add(objKeys);
}
PS环:我也改变了重将我的服务器的应用程序功能(用java编写)从字符串转换为,
List<Keys>