2012-12-03 114 views
4

我正在開發一個使用SOAP webservices的Android應用程序。當請求的響應時間太長,給我上線一個IOException:androidHttpTransport.call(SOAP_ACTION, envelope);Android SOAP IOException「BufferedInputStream已關閉」

我的代碼:

try { 
    SoapObject request = new SoapObject(Constants.NAMESPACE, METHOD_NAME); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.encodingStyle = "rpc"; 
    envelope.setOutputSoapObject(request); 

    HttpTransportSE androidHttpTransport = new HttpTransportSE(Constants.WSDL); 
    androidHttpTransport.debug = true; 

    androidHttpTransport.call(SOAP_ACTION, envelope); 

    Object result = (Object)envelope.getResponse(); 

    String results = result.toString(); 
    Log.e(TAG, "Result = "+results); 
    return parseJson(results); 

} catch (Exception e) { 
    Log.e(TAG, "Error with SOAP", e); 
    Log.e(TAG, e.getMessage()); 
    return new ArrayList<Route>(); 
} 

例外:

12-03 13:52:56.807: E/RoutesLoader(20272): Error with SOAP 
12-03 13:52:56.807: E/RoutesLoader(20272): java.io.IOException: BufferedInputStream is closed 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.io.BufferedInputStream.streamClosed(BufferedInputStream.java:118) 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.io.BufferedInputStream.read(BufferedInputStream.java:279) 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:204) 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:98) 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81) 
12-03 13:52:56.807: E/RoutesLoader(20272): at org.ksoap2.transport.HttpTransportSE.getUnZippedInputStream(HttpTransportSE.java:274) 
12-03 13:52:56.807: E/RoutesLoader(20272): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:223) 
12-03 13:52:56.807: E/RoutesLoader(20272): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:114) 
12-03 13:52:56.807: E/RoutesLoader(20272): at eu.akting.bidekide.content.RoutesLoader.downloadRoutes(RoutesLoader.java:51) 
12-03 13:52:56.807: E/RoutesLoader(20272): at eu.akting.bidekide.content.RoutesLoader.loadInBackground(RoutesLoader.java:36) 
12-03 13:52:56.807: E/RoutesLoader(20272): at eu.akting.bidekide.content.RoutesLoader.loadInBackground(RoutesLoader.java:1) 
12-03 13:52:56.807: E/RoutesLoader(20272): at android.support.v4.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:240) 
12-03 13:52:56.807: E/RoutesLoader(20272): at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:51) 
12-03 13:52:56.807: E/RoutesLoader(20272): at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:40) 
12-03 13:52:56.807: E/RoutesLoader(20272): at android.support.v4.content.ModernAsyncTask$2.call(ModernAsyncTask.java:123) 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
12-03 13:52:56.807: E/RoutesLoader(20272): at java.lang.Thread.run(Thread.java:856) 
12-03 13:52:56.807: E/RoutesLoader(20272): BufferedInputStream is closed 

任何想法? 解壓縮響應時出現問題,但我不知道如何解決該問題。

回答

1

也許嘗試設置非標準超時值。例如:

HttpTransportSE androidHttpTransport = new HttpTransportSE(this.url,this.connectionTimeout) 
相關問題