如果我尝试下载一个非常大的文件(超过100 MB),我会收到此错误:
You can configure this by setting `akka.http.[server|client].parsing.max-content-length` or calling `HttpEntity.withSizeLimit` before materializing the dataBytes stream.
val responseFuture: Future[HttpResponse] =
Http().singleRequest(HttpRequest(uri = "http://akka.io"))
我正在阅读我能以某种方式将HttpEntity设置为withoutSizeLimit
,我该怎么做?
BTW,如果我将这些配置设置添加到我的application.config中,它就无法解决问题:
akka.http.server.parsing.max-content-length=913753229
akka.http.client.parsing.max-content-length=913753229
答案 0 :(得分:0)
我注意到withSizeLimit(maxBytes: Long)
中akka.http.scaladsl.model.HttpEntity
方法的源代码注释:
请注意,如果通过
Source
方法适当修改了此实体中包含的HttpEntity.limitable
实例,则通过此方法应用的大小限制将起任何作用。对于由HTTP层本身创建的所有实体,情况总是如此,但如果您自己创建实体并希望它们正确地遵守通过此方法定义的限制,则需要确保自己应用HttpEntity.limitable
。
也许您需要使用Source
对象中的limitableByteSource()
方法转换HttpEntity
以使withoutSizeLimit
生效。这里有一些例子:akka http doc。
我遇到了同样的问题,但文档中有关withSizeLimit()
无效的原因的信息较少。幸运的是,源代码提供了有用的信息: - )