【发布时间】:2013-03-01 11:58:56
【问题描述】:
我的应用程序可以从我设备上的专用路径中选择文件并将其发送到服务器。
我正在使用 ksoap2 lib 调用 .NET webservice 将我的文件发送到服务器。我正在使用 Base 64 编码。
我可以发送不加密的最大 1MB 和加密 850Kb 的文件。我使用的加密算法是 3DES。
如果我尝试发送大于上述大小的文件,我会收到以下错误:原因:org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:121) 处的 java.lang.OutOfMemoryError
我的测试环境:Android 模拟器,API 级别 8,Android 2.2 和 SDCard 内存 512 MB
是我错过了什么吗?在这种情况下使用 BLOB 可以帮助我吗
有没有办法发送更大的文件?我听说过发送数据块,但对此一无所知。任何链接或示例代码都会有帮助。
使用以下代码获取文件数据: 这里 url = 文件存储位置
public byte[] getFileData( String vURL){
instream = new FileInputStream(vURL);
size = (int) vURL.length();
fileContent = new byte[size];
instream.read(fileContent);
}
使用以下代码对数据进行编码:
byte[] res = Utilities.getFileData(file);
String mdata = android.util.Base64.encodeToString(res, android.util.Base64.DEFAULT);
调用服务器端网络服务并向服务器发送数据
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();
无法发送超过 1 MB 的文件数据。
提前致谢
【问题讨论】:
-
请发布您的代码。除非我们能真正看到一些代码,否则对这个问题的任何答案都只是猜测。
-
请在此处指定您要发送的文件的大小,因为如果这些文件大于 4 mb,则问题不在您的 android 部分,而是在您的 Web 服务部分,您需要通过设置以下属性
来配置您的 web.Config 文件。
标签: java android ksoap2 android-ksoap2