You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Multiplatform中使用Ktor无法下载文件问题排查

问题分析与解决

错误根源

报错io.ktor.client.call.NoTransformationFoundException: No transformation found: ByteBufferChannel -> JsonObject明确说明:代码尝试将文件下载的字节流(ByteBufferChannel)转换为JsonObject类型,但Ktor找不到对应的转换器。

从错误栈可定位问题出在MessageFlow.getDownloadLink方法第179行,该方法内部大概率错误地对返回二进制文件的请求调用了body<JsonObject>()这类Json解析方法,而目标链接返回的是application/octet-stream类型的文件(空白文本test.txt),并非Json数据。

修复步骤

  • 修正响应解析逻辑:确保getDownloadLink方法针对文件下载请求使用正确的解析方式——流式处理用bodyAsChannel()获取ByteReadChannel,直接获取字节用body<ByteArray>(),绝对不能对二进制文件响应调用Json解析方法。
  • 检查请求配置:确认请求未错误设置Accept头为application/json,同时确保HttpClient未强制全局Json转换。
  • 校验完整流程:你的测试代码片段本身逻辑正确,但需确保后续流程中没有将字节流对象错误传入需要Json的处理逻辑中。

内容的提问来源于stack exchange,提问作者Demipho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:32:53