我想在Android中向服务器发送一个PDF图像。
所以我应该将PDF图像文件转换为Base64字符串。
<?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()
}
不同的是我不使用字符串,而是使用文件。
我创建了一个使用Base64编码文本和XML语法的文件。
在没有OOM的情况下,如何在Android中发送大数据?