android studio_android ksoap2 访问webservice,连续两次调用时,第二次调用异常(转)

时间:2017-06-17  来源:WebService  阅读:

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="rn"+
"rn"
  +"rn"+
    "rn"+
     ""+userID+"rn"+
    "rn"+
  "
rn"+
  "rn"+
    "rn"+
      ""+userNo+"rn"+
    "
rn"+
  "
rn"+

"";

try{
URL url =new URL(ServerUrl);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
byte[] bytes=requestData.getBytes("utf-8");
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
con.setRequestProperty("SOAPAction",soapAction);
con.setRequestProperty("Content-Length",""+bytes.length);
OutputStream outStream=con.getOutputStream();
outStream.write(bytes);
outStream.flush();
outStream.close();
InputStream inStream=con.getInputStream();

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){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
return data;
}

android studio_android ksoap2 访问webservice,连续两次调用时,第二次调用异常(转)

http://m.bbyears.com/asp/33450.html

推荐访问:android学习路线
相关阅读 猜你喜欢
本类排行 本类最新