Uso de ksop2 para enviar archivos grandes al servicio web

Tengo la aplicación que elige el archivo de una ruta de acceso dedicada en mi dispositivo y lo envía al servidor.

Estoy utilizando ksoap2 lib para llamar a. NET webservice para enviar mi archivo al servidor. Estoy utilizando la codificación Base 64.

Puedo enviar el archivo con el tamaño máximo de 1MB sin cifrado y 850Kb con la encripción. El algoritmo de encyrption que estoy usando es 3DES.

Si intento enviar los archivos más grandes que encima del tamaño consigo el siguiente error: Causado por: java.lang.OutOfMemoryError en org.ksoap2.transport.HttpTransportSE.call (HttpTransportSE.java:121)

Mi entorno de prueba: Emulador de Android con nivel de API 8, Android 2.2 y memoria SDCard 512 MB

¿Es que estoy perdiendo algo? ¿Puede BLOB ayudarme en este escenario

¿Hay alguna forma de enviar archivos de mayor tamaño? He oído hablar de enviar trozos de datos pero no tengo idea de eso. Cualquier vínculo o código de ejemplo realmente ayudará.

Para obtener datos de archivo utilizando el siguiente código: here url = donde se almacena el archivo

public byte[] getFileData( String vURL){ instream = new FileInputStream(vURL); size = (int) vURL.length();
fileContent = new byte[size]; instream.read(fileContent); }

Codifique los datos utilizando el código siguiente:

 byte[] res = Utilities.getFileData(file); String mdata = android.util.Base64.encodeToString(res, android.util.Base64.DEFAULT); 

Llamando al servicio web del lado del servidor y enviando datos al servidor

 SoapObject request = new SoapObject(nameSpace, methodName); if (fileData != null && !fileData.equals("")) { request.addProperty("vBLOBData", fileData); } SoapSerializationEnvelope envelope = getEnvelope(request); HttpTransportSE ht = new HttpTransportSE(url); // ,3000 ht.debug = true; ht.call(soapAction, envelope); response = (envelope.getResponse()).toString(); 

No se puede enviar más de 1 MB.

Gracias por adelantado

No sé lo que estás tratando de lograr, pero ¿por qué no dividir su archivo en partes y enviar cada parte individualmente en un bucle o en un android background service con un temporizador que envía una parte cada x segundos.

Trate de establecer su búfer a 1024 antes de enviarlo, su alrededor del límite de su tamaño de búfer y su carnero

Utilice el algoritmo GZip Zipping para comprimir archivos grandes desde el lado móvil; Utilice el mismo descompresión del servidor.

También use MultipartEntity puede ayudar a cargar contenido de archivo grande.

Si la compresión no ayuda – como se mencionó en la publicación anterior – probablemente tendrá que segmentar el mensaje usted mismo.

Segmentación

  • ¿Cuál es el espacio de nombres, acción de jabón y url debería ser para mi aplicación Android acceder a servicio web wcf?
  • Android 1.6 ksoap2 "RuntimeException: No se puede serializar: java.util.GregorianCalendar ..", al pasar el parámetro datetime
  • Android kSOAP2 Certificados SSL auto-firmados "Requisitos de seguridad no cumplidos - No hay cabecera de seguridad en el mensaje"
  • Android, KSoap2 y .NET Web Service w / parameters = Resultado NULL
  • ¿Cómo usar el tiempo de espera de ksoap en android?
  • Cómo agregar un archivo .jar al proyecto de Android Studio (versión 0.4.0)
  • Analizar la respuesta de KSoap2 en android
  • Java.io.IOException: Error en la solicitud HTTP, estado HTTP: 500 (ksoap2)
  • Cómo llamar a un servicio WCF usando ksoap2 en android?
  • Tener problemas para vincular un objeto ksoap a un ArrayList en Android
  • Generación de stub de servicios Web + android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.