i am creating an app on Android 4.4.2 and uses ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar that calls a soap web service and recieves json in response. The app works fine if the json is in small size but whenever the json in larger in size, the code gives java.io.IOException: BufferedInputStream is closed. plese help.
here is my code for web service
public class SoapWebservice {
private static final String NAMESPACE = "http://schemas.xmlsoap.org/soap/encoding/";
private static final String URL = "http://staging.utzcertified.org/webservice.php?wsdl";
private static final String SOAP_ACTION = "AddServicePortType";
private static String return_string = "No response";
/**
* This method return Producer List from barcode & details in JSON string format.
* Scanner class invoke this method
* */
public static String returnProducersFromBarCode(DotNetWebService activity, int id,String barcode,String device,String language){
Log.i("Function Name","returnProducersFromBarCode");
Log.i("Parameters","Member ID:"+id+",Barcode:"+barcode+",Device:"+device+",Language:"+language);
String METHOD_NAME = "returnProducersFromBarCode";
SoapObject soapRequest = new SoapObject(NAMESPACE,"returnProducersFromBarCode");
soapRequest.addProperty("a", id);
soapRequest.addProperty("b", barcode);
soapRequest.addProperty("c", device);
soapRequest.addProperty("d", language);
SoapSerializationEnvelope soap_envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soap_envelope.setOutputSoapObject(soapRequest);
soap_envelope.encodingStyle = SoapEnvelope.ENC;
//HttpTransportSE androidHttpTransport = new HttpTransportSE(URL, 2000000000);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
SoapPrimitive soapResponse = null;
try {
System.setProperty("http.keepAlive", "false");
soap_envelope.setAddAdornments(false);
androidHttpTransport.call(SOAP_ACTION,soap_envelope);
Log.i("SoapWebServier-soap_envelope:",""+soap_envelope.getResponse());
soapResponse = (SoapPrimitive) soap_envelope.getResponse();
Log.i("SoapWebServier-soap_response:",""+soapResponse.toString());
}catch (XmlPullParserException e){
e.printStackTrace();
return null;
}catch (IOException e){
e.printStackTrace();
return null;
}
if(soapResponse != null){
return_string = soapResponse.toString();
}
return return_string;
}
}
i am calling its method in my activity in async task
private class AsyncCallWS extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
Log.i(TAG, "doInBackground");
int id = 106;
String barcode = "3456789012340";
String device = "Mobile";
String language = "en";
//Call Webservice class method and pass values and get response
String aResponse = SoapWebservice.returnProducersFromBarCode(DotNetWebService.this , id, barcode, device, language);
Log.i("AndroidExampleOutput", "----"+aResponse);
return null;
}
@Override
protected void onPostExecute(Void result) {
Log.i(TAG, "onPostExecute");
}
@Override
protected void onPreExecute() {
Log.i(TAG, "onPreExecute");
}
@Override
protected void onProgressUpdate(Void... values) {
Log.i(TAG, "onProgressUpdate");
}
}
EDIT: LOGCAT
03-28 01:23:42.170: W/System.err(1237): java.io.IOException: BufferedInputStream is closed
03-28 01:23:42.180: W/System.err(1237):at java.io.BufferedInputStream.streamClosed(BufferedInputStream.java:118)
03-28 01:23:42.190: W/System.err(1237): at java.io.BufferedInputStream.read(BufferedInputStream.java:258)
03-28 01:23:42.190: W/System.err(1237): at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:200)
03-28 01:23:42.200: W/System.err(1237): at java.util.zip.GZIPInputStream.<init> (GZIPInputStream.java:98)
03-28 01:23:42.200: W/System.err(1237): at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
03-28 01:23:42.210: W/System.err(1237): at org.ksoap2.transport.HttpTransportSE.getUnZippedInputStream(HttpTransportSE.java:328)
03-28 01:23:42.210: W/System.err(1237): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:250)
03-28 01:23:42.220: W/System.err(1237): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118)
03-28 01:23:42.230: W/System.err(1237): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113)
03-28 01:23:42.230: W/System.err(1237): at com.classes.SoapWebservice.returnProducersFromBarCode(SoapWebservice.java:71)
03-28 01:23:42.240: W/System.err(1237): at com.example.soapattemptone.DotNetWebService$AsyncCallWS.doInBackground(DotNetWebService.java:60)
03-28 01:23:42.240: W/System.err(1237): at com.example.soapattemptone.DotNetWebService$AsyncCallWS.doInBackground(DotNetWebService.java:1)
03-28 01:23:42.250: W/System.err(1237): at android.os.AsyncTask$2.call(AsyncTask.java:288)
03-28 01:23:42.260: W/System.err(1237): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
03-28 01:23:42.270: W/System.err(1237): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
03-28 01:23:42.270: W/System.err(1237): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
03-28 01:23:42.270: W/System.err(1237): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
03-28 01:23:42.280: W/System.err(1237): at java.lang.Thread.run(Thread.java:841)