【问题标题】:Using ksop2 how to send large files to web service使用 ksop2 如何将大文件发送到 Web 服务
【发布时间】: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


【解决方案1】:

我不知道您要达到什么目的,但是为什么您不将文件分成多个部分,然后使用每 x 秒发送一个部分的计时器将每个部分单独发送到循环或 android background service .

【讨论】:

    【解决方案2】:

    在发送之前尝试将缓冲区设置为 1024,这大约是缓冲区大小和内存的限制

    【讨论】:

      【解决方案3】:

      使用GZip Zipping算法从移动端压缩大文件;从服务器使用相同的解压缩。

      同样使用MultipartEntity可以帮助上传大文件内容。

      【讨论】:

        【解决方案4】:

        如果压缩不起作用 - 如前一篇文章所述 - 您可能必须自己对消息进行分段。

        Segmentation

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多