【发布时间】:2019-05-30 19:46:56
【问题描述】:
我想将 PDF 图像发送到 Android 中的服务器。
服务器规范需要我应该使用 Base64 编码。
所以我应该将 PDF 图像文件转换为 Base64 字符串。
以下是 HTTP POST 请求:
<?xml version="1.0" encoding="UTF-8"?>
<request>
<auth>
<!-- auth info -->
</auth>
<imagefile>
<filename>Test Attachment</filename>
<type>pdf</type>
<data>"HERE IS BASE64 String"</data>
</imagefile>
</request>
而且我使用了下面的代码,它只是Http post请求代码。
fun post(url: String, xml: String) = Observable.defer {
val request = Request.Builder()
.url(url)
.post(RequestBody.create(contentType, xml))
.build()
okHttpClient.newCall(request).execute()
}
如果是小pdf文件,没关系。 (工作正常)
但是当我使用大的pdf文件(超过20MB)时,出现内存不足。
所以我尝试了另一种方法,如下所示。
fun post(url: String, xmlFile: File) = Observable.defer {
val request = Request.Builder()
.url(url)
.post(RequestBody.create(contentType, xmlFile))
.build()
okHttpClient.newCall(request).execute()
}
不同的是,我用的不是String,而是File。
我使用带有 XML 语法的 Base64 编码文本创建了一个文件。
但它也失败了。
如何在没有OOM的情况下在Android中发送大数据?
【问题讨论】: