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.

  • Event when the FragmentTransaction is completed
  • Align one item to left of ActionBar
  • Android facebook applicationId cannot be null
  • Android: A good looking (standard) settings menu
  • Create Button with rounded corners in android
  • android: when to use onStart(), onStop()?
  • 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?

  • Why does my exception handler not trap Android SQLite insert error?
  • Are there any http proxies like fiddler or wireshark on android?
  • Programmatically make app FULL SCREEN in Android
  • Android Studio Unable to run AVD
  • Selendroid as a web scraper
  • set mouse position on rooted android device
  • 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.