小编spo*_*ant的帖子

在 Ktor 中,如何将 InputStream 流式传输到 HttpClient 请求的主体中?

我正在使用Ktor 1.2.2,并且有一个 InputStream 对象,我想将其用作我接下来发出的 HttpClient 请求的主体。直到 Ktor 0.95 为止,这个InputStreamContent对象似乎就是这样做的,但它已在版本 1.0.0 中从 Ktor 中删除(遗憾的是无法弄清楚原因)。

我可以使用 ByteArrayContent 使其工作(请参见下面的代码),但我宁愿找到一个不需要将整个 InputStream 加载到内存中的解决方案......

ByteArrayContent(input.readAllBytes())
Run Code Online (Sandbox Code Playgroud)

此代码是一个简单的测试用例,模拟我想要实现的目标:

val file = File("c:\\tmp\\foo.pdf")
val inputStream = file.inputStream()
val client = HttpClient(CIO)
client.call(url) {
      method = HttpMethod.Post
      body = inputStream // TODO: Make this work :(
    }
// [... other code that uses the response below]
Run Code Online (Sandbox Code Playgroud)

如果我遗漏了任何相关信息,请告诉我,

谢谢!

kotlin ktor ktor-client

8
推荐指数
2
解决办法
6331
查看次数

标签 统计

kotlin ×1

ktor ×1

ktor-client ×1