How to increase transport.dump size from 256 bytes to 512 or more bytes in KSOAP2?

I have HttpTransportSE object from KSOAP2 library.
I want to dump response file which may contains mote then simple 9697 character.
currently i am doing it by making transport.

transport.debug = true;
System.out.println("Response ----------"+transport.responseDump);

But it gives me half response with at last.

  • RecyclerView: how to clear cached/recycled views?
  • Get data back from a fragment dialog - best practices?
  • LinearLayout, RelativeLayout, etc. margins do not work as expected
  • Android: Draw Background with no GPU OverDraw like Whatsapp
  • Are there any official APIs/Samples/Tutorials for implementing the new Material-Design-guidelines?
  • How to parse JSON Array (Not Json Object) in Android
  • In its internal coding structure i found that it is using 256 bytes for creating and destroying it’s responseDump like shown below:

    package org.ksoap2.transport;
    
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.MalformedURLException;
    import java.net.Proxy;
    import java.net.URL;
    import java.util.List;
    import org.ksoap2.HeaderProperty;
    import org.ksoap2.SoapEnvelope;
    import org.xmlpull.v1.XmlPullParserException;
    
    public class HttpTransportSE extends Transport
    {
      private ServiceConnection connection;
    
      public HttpTransportSE(String url)
      {
        super(null, url);
      }
    
      public HttpTransportSE(Proxy proxy, String url)
      {
        super(proxy, url);
      }
    
      public HttpTransportSE(String url, int timeout)
      {
        super(url, timeout);
      }
    
      public HttpTransportSE(Proxy proxy, String url, int timeout) {
        super(proxy, url, timeout);
      }
    
      public void call(String soapAction, SoapEnvelope envelope)
        throws IOException, XmlPullParserException
      {
        call(soapAction, envelope, null);
      }
    
      public List call(String soapAction, SoapEnvelope envelope, List headers)
        throws IOException, XmlPullParserException
      {
        if (soapAction == null) {
          soapAction = "\"\"";
        }
        byte[] requestData = createRequestData(envelope);
    
        this.requestDump = (this.debug ? new String(requestData) : null);
        this.responseDump = null;
    
        this.connection = getServiceConnection();
    
        this.connection.setRequestProperty("User-Agent", "kSOAP/2.0");
    
        if (envelope.version != 120) {
          this.connection.setRequestProperty("SOAPAction", soapAction);
        }
        this.connection.setRequestProperty("Content-Type", "text/xml");
        this.connection.setRequestProperty("Connection", "close");
        this.connection.setRequestProperty("Content-Length", "" + requestData.length);
    
        if (headers != null) {
          for (int i = 0; i < headers.size(); i++) {
            HeaderProperty hp = (HeaderProperty)headers.get(i);
            this.connection.setRequestProperty(hp.getKey(), hp.getValue()); }  } 
    this.connection.setRequestMethod("POST");
        this.connection.connect();
    
        OutputStream os = this.connection.openOutputStream();
    
        os.write(requestData, 0, requestData.length);
        os.flush();
        os.close();
        requestData = null;
    
        List retHeaders = null;
        InputStream is;
        try { this.connection.connect();
          is = this.connection.openInputStream();
          retHeaders = this.connection.getResponseProperties();
        } catch (IOException e) {
          is = this.connection.getErrorStream();
    
          if (is == null) {
            this.connection.disconnect();
            throw e;
          }
        }
    
        if (this.debug) {
          ByteArrayOutputStream bos = new ByteArrayOutputStream();
          byte[] buf = new byte[256];
          while (true)
          {
            int rd = is.read(buf, 0, 256);
            if (rd == -1)
              break;
            bos.write(buf, 0, rd);
          }
    
          bos.flush();
          buf = bos.toByteArray();
          this.responseDump = new String(buf);
          is.close();
          is = new ByteArrayInputStream(buf);
        }
    
        parseResponse(envelope, is);
        return retHeaders;
      }
    
      public ServiceConnection getConnection() {
        return (ServiceConnectionSE)this.connection;
      }
    
      protected ServiceConnection getServiceConnection() throws IOException {
        return new ServiceConnectionSE(this.proxy, this.url, this.timeout);
      }
    
      public String getHost()
      {
        String retVal = null;
        try
        {
          retVal = new URL(this.url).getHost();
        } catch (MalformedURLException e) {
          e.printStackTrace();
        }
    
        return retVal;
      }
    
      public int getPort()
      {
        int retVal = -1;
        try
        {
          retVal = new URL(this.url).getPort();
        } catch (MalformedURLException e) {
          e.printStackTrace();
        }
    
        return retVal;
      }
    
      public String getPath()
      {
        String retVal = null;
        try
        {
          retVal = new URL(this.url).getPath();
        } catch (MalformedURLException e) {
          e.printStackTrace();
        }
    
        return retVal;
      }
    }
    

    You found that its only

    int rd = is.read(buf, 0, 256);

    So, is there any options to increase responseDump size?

    Related posts:

    CustomTabs shows ERR_UNKNOWN_URL_SCHEME after 302 Redirect
    Why does it always shows GC_CONCURRENT FREED and GC_CONCURRENT ALLOCATE in Android Logcat while runn...
    Android AppCompat-v21 vs Pure Material
    Dot (.) instead of Swipe tab
    Android Dialog Box without buttons
    How to convert jar file into apk?
  • …have you declared this activity in your AndroidManifest.xml
  • Calling stopSelf() in Service while thread is running
  • How can I get a file from CamScanner or Office Lens in a web app running on Android?
  • Google Map API V2 - How do I keep a marker in the center of the screen while user is scrolling the map?
  • R.id.container not resolved
  • Xamarin.Forms SetHasNavigationBar false causes jump on PushAsync
  • 2 Solutions collect form web for “How to increase transport.dump size from 256 bytes to 512 or more bytes in KSOAP2?”

    There is no limitation in ksoap, but it is in logcat. Logcat doesn’t print long strings, so write in a file or write piece by piece in the log.

    if (transport.debug) 
    { 
    byte[] is = transport.responseDump.getBytes(); 
    String path="/mnt/sdcard/appData/"; 
    File file = new File(path+"responseDump.xml"); 
    if (!file.exists()) 
    { 
    file.createNewFile();
    }
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); bos.write(is); bos.flush(); bos.close(); 
    }
    
    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.