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.
- Android, Ksoap, webService
- Crear sobres de jabón con encabezado de seguridad en android utilizando ksoap2
- Cómo autenticar servicio web sap con ksoap2
- Problema de KSoap2 y Array de Android
- Ksoap2: java.lang.IllegalArgumentException: size <= 0 mientras hace una http.call
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
- Ksoap2 Android - ¿cómo especificar un espacio de nombres para las propiedades secundarias de un objeto complejo?
- Cómo configurar jabón Header usando ksoap2 - android
- Eliminación del campo i: type en la solicitud SOAP generada por kSoap2 en Android
- Aplicación de Android que trabaja en WIFI y 3G (Sin proxy), pero no funciona en 3G (Si proxy y puerto están asignados)
- Excepción al usar la biblioteca ksoap2 para android
- Servicio web con KSOAP
- establece codificación utf-8 para ksoap2 en android
- Android ksoap llamada xmlpullparser excepción
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
- ExpandableRecyclerAdapter Cómo forzar el elemento a moverse hacia arriba mientras se expande un elemento
- Icono flotante en otras aplicaciones