Cómo aumentar el tamaño de transport.dump de 256 bytes a 512 o más bytes en KSOAP2?

Tengo el objeto de HttpTransportSE de la biblioteca de KSOAP2. Quiero volcado archivo de respuesta que puede contiene mote entonces simple 9697 carácter . Actualmente lo estoy haciendo haciendo transporte.

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

Pero me da media respuesta con al fin.

En su estructura interna de codificación encontré que está utilizando 256 bytes para crear y destruir su responseDump como se muestra a continuación:

 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; } } 

Usted encontró que es sólo

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

Entonces, ¿hay alguna opción para aumentar el tamaño de responseDump?

No hay limitación en ksoap, pero está en logcat. Logcat no imprime cadenas largas, por lo que escribir en un archivo o escribir pieza por pieza en el registro.

 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(); } 
  • No se detectaron restricciones de gramática (DTD o esquema XML) para el documento (Android)
  • Parsing Soap Uso del servicio de Retrofit Estoy frente a una excepción como este (es decir) modelo de cuerpo desajustado en el modelo de sobre de clase en la respuesta
  • XmlPullParser getAttributeValue devuelve null
  • ¿Por qué hay nodos #text en mi archivo xml?
  • NetworkOnMainThread
  • Analizando espermas inválidos con XmlPullParsers de Android
  • XmlPullParser obtener archivo del sistema de archivos
  • Los datos Xml se convierten en datos Json en android
  • No se pudo obtener los datos xml de res en Android 3.0 y versiones posteriores
  • Si cambio una biblioteca externa: AndroidManifest, no puedo analizar el archivo
  • Adview error de análisis de XML sin consolidar prefijo Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.