2
03-26 14:12:19.045: E/Webservices(2863): java.io.EOFException
03-26 14:12:19.045: E/Webservices(2863):    at libcore.io.Streams.readAsciiLine(Streams.java:203)
03-26 14:12:19.045: E/Webservices(2863):    at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:560)
03-26 14:12:19.045: E/Webservices(2863):    at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:813)
03-26 14:12:19.045: E/Webservices(2863):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
03-26 14:12:19.045: E/Webservices(2863):    at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486)
03-26 14:12:19.045: E/Webservices(2863):    at org.ksoap2.transport.ServiceConnectionSE.getResponseCode(ServiceConnectionSE.java:103)
03-26 14:12:19.045: E/Webservices(2863):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:197)
03-26 14:12:19.045: E/Webservices(2863):    at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118)
03-26 14:12:19.045: E/Webservices(2863):    at .utils.Webservices.callinternet(Webservices.java:125)
03-26 14:12:19.045: E/Webservices(2863):    at .utils.Webservices.getResponse(Webservices.java:73)
03-26 14:12:19.045: E/Webservices(2863):    at .utils.Webservices.getResponse(Webservices.java:79)
03-26 14:12:19.045: E/Webservices(2863):    at .utils.Webservices.getResponse(Webservices.java:79)
03-26 14:12:19.045: E/Webservices(2863):    at .utils.AsynTask.doInBackground(AsynTask.java:61)
03-26 14:12:19.045: E/Webservices(2863):    at .utils.AsynTask.doInBackground(AsynTask.java:1)
03-26 14:12:19.045: E/Webservices(2863):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-26 14:12:19.045: E/Webservices(2863):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
03-26 14:12:19.045: E/Webservices(2863):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-26 14:12:19.045: E/Webservices(2863):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
03-26 14:12:19.045: E/Webservices(2863):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
03-26 14:12:19.045: E/Webservices(2863):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
03-26 14:12:19.045: E/Webservices(2863):    at java.lang.Thread.run(Thread.java:856)

当我从 android 调用 web 服务时,这个异常只来了一段时间如何才能清楚,请帮助我

我参加了

ArrayList<HeaderProperty> headerPropertyArrayList = new ArrayList<HeaderProperty>();
    headerPropertyArrayList.add(new HeaderProperty("Connection", "close"));

这条线也不过没用

4

4 回答 4

10

这是一个错误,我在使用ksoap2-android-assembly-3.3.0-jar-with-dependencies.jar时遇到了同样的错误。看起来这个问题自 v3.1.1 以来一直很普遍(一些用户在早期版本中也遇到过这个问题)。一位用户给出了解决此问题的解决方法。据他介绍,

ArrayList<HeaderProperty> headerPropertyArrayList = new ArrayList<HeaderProperty>();
headerPropertyArrayList.add(new HeaderProperty("Connection", "close"));
httpSE.call(SOAP_ACTION, envelope, headerPropertyArrayList);

成功了。我试过了,它对我有用。如果您仍然面临问题,那么您可以使用ksoap2-android-assembly-2.6.4-jar-with-dependencies.jar。我在我的另一个项目上使用这个版本,它从来没有给我带来任何问题。

于 2014-09-04T04:39:57.970 回答
0

我得到了同样的错误,但我解决了,实际上soap webservice操作(方法)名称拼写错误,这就是Ksoap2库抛出java.io.EOFException异常的原因所以检查你的操作(方法)名称,命名空间名称和soapAction(名称空间/方法名称)。我认为这将帮助您处理此异常

于 2015-03-31T16:09:53.173 回答
0

您好我遇到了同样的问题。请使用连接超时参数来避免此异常。

HttpTransportSE androidHttpTransport = new HttpTransportSE("Your Url here",120000);

并在标题中设置连接关闭参数。

ArrayList<HeaderProperty> headerPropertyArrayList = new ArrayList<HeaderProperty>();
headerPropertyArrayList.add(new HeaderProperty("Connection", "close"));
httpSE.call(SOAP_ACTION, envelope, headerPropertyArrayList);
于 2016-05-18T09:45:26.743 回答
-1

EOFException - 表示输入期间意外到达文件结尾或流结尾。此异常主要由数据输入流用来表示流结束。请注意,许多其他输入操作在流结束时返回一个特殊值,而不是引发异常。

所以:在call()你的HttpTransportSE实例之后instance.getServiceConnection().openOutputStream().close();

我的代码:

HttpTransportSE androidHttpTransport = new HttpTransportSE(url);
try {
    androidHttpTransport.call(mSoapAction, envelope);            
    response = (SoapObject) envelope.bodyIn;

    androidHttpTransport.getServiceConnection().openOutputStream().close();
} catch (IOException | XmlPullParserException e) {
    e.printStackTrace();           
}
于 2017-11-07T13:38:33.063 回答