java.io.EOFException使用kso​​ap2 lib libcore.io.Streams.readAsciiLine(Streams.java:203)

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调用webservice时这个exception只有一段时间才能清楚这个请帮助我

我参加了

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

这条线也没用

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

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

做了伎俩。 我尝试过它,它对我有用。 如果您仍然遇到问题,那么您可以使用ksoap2-android-assembly-2.6.4-jar-with-dependencies.jar 。 我在我的另一个项目中使用这个版本,它从来没有给我任何问题。

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

嗨,我遇到了同样的问题。请使用连接超时参数来避免此exception。

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

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

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

EOFException – 表示在输入期间意外到达文件末尾或流末尾的信号。 此exception主要由数据输入流用于信号流的结束。 请注意,许多其他输入操作在流的末尾返回特殊值而不是抛出exception。

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

mycode的:

 HttpTransportSE androidHttpTransport = new HttpTransportSE(url); try { androidHttpTransport.call(mSoapAction, envelope); response = (SoapObject) envelope.bodyIn; androidHttpTransport.getServiceConnection().openOutputStream().close(); } catch (IOException | XmlPullParserException e) { e.printStackTrace(); }