1.
代码如下 | 复制代码 |
Webservice.GetVcardByUserNo(String userId,String userNo); |
这个是封装了的webservice接口。
2.在程序中连续两次调用该接口时,ksoap2在解析第二次调用返回的结果时抛异常。
异常信息如下:
代码如下 | 复制代码 |
org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@4383bf38) |
3.打断点调试时,不会出现该异常。
4.无奈之下使用android 的HttpURLConnection 直接调用webservice接口,直接使用时不会发生以上异常,所以使用ksoap2 访问webservice需要设置什么呢?
5.使用HttpUrlConnection访问webserivice代码如下:
(一)连接webservice
代码如下 | 复制代码 |
String ServerUrl="webservice地址"; String soapAction="http://www.111cn.net/PhoneClient/GetVcardJson"; String data=""; String requestData="<?xml version="1.0" encoding="utf-8"?>rn"+ "</soap:Envelope>"; try{ data=parser(inStream); |
(二)解析返回的数据
代码如下 | 复制代码 |
private static String parser(InputStream in){ XmlPullParser parser=Xml.newPullParser(); String data=""; try{ int flag=0; parser.setInput(in, "utf-8"); int evenType=parser.getEventType(); while(evenType!=XmlPullParser.END_DOCUMENT){ switch(evenType){ case XmlPullParser.START_DOCUMENT:break; case XmlPullParser.START_TAG: break; case XmlPullParser.TEXT: data=parser.getText(); break; case XmlPullParser.END_TAG:break; } parser.next(); evenType=parser.getEventType(); } }catch(XmlPullParserException e){ |