android ksoap2 can not download big file

220 views
Skip to first unread message

phan son

unread,
Mar 3, 2014, 1:31:40 PM3/3/14
to ksoap2-...@googlegroups.com
Hi everyone.
I used ksoap2 version 3.0 and download a message with attached file. But i always get error below when i download a big size file:
03-03 18:25:41.362: W/dalvikvm(2981): threadid=11: thread exiting with uncaught exception (group=0x40a71930)
03-03 18:25:41.463: E/AndroidRuntime(2981): FATAL EXCEPTION: Thread-243
03-03 18:25:41.463: E/AndroidRuntime(2981): java.lang.OutOfMemoryError
03-03 18:25:41.463: E/AndroidRuntime(2981): at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
03-03 18:25:41.463: E/AndroidRuntime(2981): at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:124)
03-03 18:25:41.463: E/AndroidRuntime(2981): at java.lang.StringBuilder.append(StringBuilder.java:271)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.kxml2.io.KXmlParser.readValue(KXmlParser.java:1338)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.kxml2.io.KXmlParser.next(KXmlParser.java:390)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:241)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:273)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:273)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:273)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:273)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.readUnknown(SoapSerializationEnvelope.java:273)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.read(SoapSerializationEnvelope.java:389)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:151)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.transport.Transport.parseResponse(Transport.java:118)
03-03 18:25:41.463: E/AndroidRuntime(2981): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:253)
03-03 18:25:41.463: E/AndroidRuntime(2981): at com.desabran.securemail.businesses.Soapk2App.soapGetNextMessage(Soapk2App.java:426)
03-03 18:25:41.463: E/AndroidRuntime(2981): at com.desabran.securemail.businesses.AppBussiness.loadMessFromSer2Dbnew(AppBussiness.java:51)
03-03 18:25:41.463: E/AndroidRuntime(2981): at com.desabran.securemail.services.RevMessService.getMessages(RevMessService.java:96)
03-03 18:25:41.463: E/AndroidRuntime(2981): at com.desabran.securemail.services.RevMessService$2.run(RevMessService.java:143)
Try much with many help from google but no luck
Could you help me to resolve this?
Thank you.

Manfred Moser

unread,
Mar 3, 2014, 8:21:55 PM3/3/14
to ksoap2-...@googlegroups.com
You are not supposed to encode large files in the xml payload. It is merely running out of memory since it it trying to parse it. Change to just submit the url via the webservice and do a normal http get to download the actual binary. 

manfred


--
You received this message because you are subscribed to the Google Groups "ksoap2-android" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ksoap2-androi...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

phan son

unread,
Mar 3, 2014, 9:06:20 PM3/3/14
to ksoap2-...@googlegroups.com
Thank you for your answer,
Mean that i should not use https, right?
Anyway to overcome this? I need secure file transfer.
Please help.

Manfred Moser

unread,
Mar 4, 2014, 1:23:05 AM3/4/14
to ksoap2-...@googlegroups.com
I mean you should not use SOAP to transfer large files.


--

phan son

unread,
Mar 4, 2014, 4:23:35 AM3/4/14
to ksoap2-...@googlegroups.com
Oh, I see now.
However, i google someone said that we can change to stream to file on android, instead of parse directly on memory. They give example modifying directly in HttpTransportSE.java version 2.5.
Do you know about this?

phan son

unread,
Mar 4, 2014, 4:24:50 AM3/4/14
to ksoap2-...@googlegroups.com
I found that in version 3.0, we can set outputFile. I tried, but no luck.
Do you know about this?
Thank you.

Manfred Moser

unread,
Mar 5, 2014, 12:39:43 AM3/5/14
to ksoap2-...@googlegroups.com
Yes of course... it works .. see the javadoc and commit history. It should work and stream the file to storage.


--
Reply all
Reply to author
Forward
0 new messages