0

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)
sabahat
  • 11
  • 3

1 Answers1

0

In my case, removing gzip encoding resolved the problem. It seems gzip causes soap parsing error.

How to request a gzipped / compressed SOAP response?

Community
  • 1
  • 1
Tryagain Tsai
  • 89
  • 1
  • 3