android使用ksoap2-android调用webservice时报java.io.EOFException错误

报错代码如下:

java.io.EOFException 
at libcore.io.Streams.readAsciiLine(Streams.java:203)
at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:547)
at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:787)
at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
at org.ksoap2.transport.ServiceConnectionSE.openInputStream(ServiceConnectionSE.java:66)
at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:77)

我使用的版本是ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar,后台WebService是java写的,每次请求数据的时候,很大几率出现EOFException异常,在短时间内再次请求的时候就不会报这个异常了,能正常获取数据,我之前的解决办法如下:

				int times=CONNECTION_TIMES;
				String result=ZHCG_WebService.getResponse(url, methodName, params);
				while(result==null&times>0){//当结果为空时,尝试再次连接获取,但连接次数不超过2次
					result=ZHCG_WebService.getResponse(url, methodName, params);
					times--;
				}
上面的ZHCG_WebService.getResponse()就是调用ksoap2-android的一个封装类,返回的数据就是请求结果,当返回结果为null(请求出现异常,如EOFException),则再次请求,times就是重连次数。这只是一时的解决办法。

第二种解决办法,见stackoverflow,它的办法就是如下:

<span style="white-space:pre">			</span>HttpTransportSE transportSE=new HttpTransportSE(url, TIME_OUT);
			//添加HeaderProperty信息,解决调用call的时候报java.io.EOFException错误
			ArrayList<HeaderProperty> headerPropertyArrayList = new ArrayList<HeaderProperty>();
			headerPropertyArrayList.add(new HeaderProperty("Connection", "close"));
			transportSE.call(null, envelope,headerPropertyArrayList);

提问者说,使用这个办法问题依旧存在,但我使用这个办法解决了,我使用的ksoap2-android版本是3.2.0,再者stackoverflow的回答者还建议,如果问题还是存在的话,可以使用ksoap2-android-assembly-2.6.4版本的

之前遇到这个问题的时候,一直没有解决,都是使用第一种办法先过渡的,现在解决了,记录一下。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值