使用okhttp和okio下载pdf

时间:2019-06-23 15:34:46

标签: android pdf kotlin okhttp okio

我在应用内下载pdf时遇到了一些问题。由于以下消息(无效格式),某些pdf无法打开

  

错误=无法创建文档:文件不是PDF格式或已损坏

Okhttp设置代码:

val file = File(Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), mArgs.docName)
val request = Request.Builder()
.url(mArgs.url)
.addHeader("Authorization", "Bearer $token")
.build()

if (mOkBuilder == null) {
   mOkBuilder = OkHttpClient.Builder()
   mOkBuilder = mOkBuilder?.
   addNetworkInterceptor(mLoadingInterceptor)
   mOkHttpClient = mOkBuilder?.build()
}

请求代码:

mOkHttpClient?.newCall(request)?.enqueue(object : Callback {
    ....
    ....
    override fun onRespone(call: Call, response: Response) {
        val sink = Okio.buffer(Okio.sink(file))
        sink.writeAll(response.body()?.source())
        sink.close()
}

但是,如果我在chrome浏览器中复制该网址,则chrome将下载该网址,并且可以使用google pdf查看器打开它。该文件还比我从我的应用程序代码内部下载的文件小。我不知道如何解决此问题,它认为它与如何处理文件以及保存在响应回调内部有关。

0 个答案:

没有答案