android ksoap2 访问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="<?xml version="1.0" encoding="utf-8"?>rn"+
"<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/">rn"
  +"<soap:Header>rn"+
    "<AuthHeader xmlns="http://www.111cn.net/PhoneClient/">rn"+
     "<UserId>"+userID+"</UserId>rn"+
    "</AuthHeader>rn"+
  "</soap:Header>rn"+
  "<soap:Body>rn"+
    "<GetVcardJson xmlns="http://www.111cn.net/PhoneClient/">rn"+
      "<vcardUserNo>"+userNo+"</vcardUserNo>rn"+
    "</GetVcardJson>rn"+
  "</soap:Body>rn"+

"</soap:Envelope>";

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;
}

时间: 2024-11-03 20:42:53

android ksoap2 访问webservice,连续两次调用时,第二次调用异常(转)的相关文章

在Android中访问WebService接口的方法_Android

需要引入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar 复制代码 代码如下: //WebService的命名空间 static final String namespace = "http://impl.service.suncreate.com"; //服务器发布的url static final String url = http://10.100.3.41/axis2/services/UploadService;

在Android中访问WebService接口的方法

需要引入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar 复制代码 代码如下: //WebService的命名空间 static final String namespace = "http://impl.service.suncreate.com"; //服务器发布的url static final String url = http://10.100.3.41/axis2/services/UploadService;

WebService CXF版本频繁调用时,出现java.lang.RuntimeException: org.apache.c

问题描述 java.lang.RuntimeException:org.apache.cxf.interceptor.Fault:异常org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:102)org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInter

web service-android通过ksoap2连接webservice报错

问题描述 android通过ksoap2连接webservice报错 SoapFault - faultcode: 'Receiver' faultstring: 'Layout does not exist LayoutID = 0' faultactor: 'null' detail: nullat org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:137)哪

线程-android 访问webservice获取返回结果

问题描述 android 访问webservice获取返回结果 // 访问webservice WebServiceUtils.callWebService(WebServiceUtils.LOCAL_SERVER_URL, "uploadAttendance", pro, new WebServiceCallBack() { @Override public void callBack(SoapObject result) { ProgressDialogUtils.dismissP

android ksoap2调用webservice android端代码应该怎么写 跪求!

问题描述 android ksoap2调用webservice android端代码应该怎么写 跪求! 这是我在别人那里拔下来的代码 可以连接webservice 我想修改成可以返回数据库数据的 webservice已经可以实现查询数据库 只是在这我不会改 求求你们帮帮我 在线等 如果可以我发红包感谢 谢谢大家了 package com.bang.testwebservicecall; import java.io.IOException; import java.util.Dictionary

博客大巴连续两天无法访问百万人难登录

博客大巴"停车" 百万人难登录 主页连续两天无法访问,域名服务商称按上级要求查询网站备案 (记者 李洁) 直到昨天晚上, 网友"落地发芽"仍在刷新自己在"博客大巴"上的页面,与她有同样遭遇的还有数百万的用户.据了解,从前天下午4点左右开始,大量"博客大巴"(www.blogbus.com)的用户突然发现自己的博客再也无法正常登录.昨天,记者通过"博客大巴"的域名提供商了解到,前日接相关域名管理部门的通知,要

浏览器调接口-浏览器怎么访问webservice接口

问题描述 浏览器怎么访问webservice接口 求大神告知 浏览器怎么访问webservice接口,在线等.............. 解决方案 不是很明白, 你浏览器通过http,在地址栏输入你的 webservice 的地址就可以. 解决方案二: 首先去google,如何调用webservice.有多重实现方式!自己选择 但是前提是你必须知道wsdl文件的定义,你所需要的参数全部在里面有.自己去看! 解决方案三: 可以通过浏览器掉接口里面的方法吗 解决方案四: 直接在浏览器调用webser

无需.net和专用组件实现用asp访问webservice

web|访问 可能,大多数的人认为我们需要运行asp.net或使用soap toolkit以访问webservice但是这不是必需的,使用微软的xml parser我们同样可以利用传统的asp页面来访问webservice,下面我就展示给大家看一看!我将使用三个文件来实现我的展示.    global.asa,当程序开始运行时,使用application变量    i_soapcall.asp 一个包含文件,用以访问soap service    default.asp 一个基本的asp文件,用