Akka HTTP客户端EntityStreamSizeException

时间:2018-11-07 14:44:13

标签: scala akka akka-stream akka-http

我正在尝试使用Akka HTTP将获取请求发送到我的本地主机,并且出现以下异常:

EntityStreamSizeException: actual entity size (Some(10166731700)) exceeded content length limit (8388608 bytes)! You can configure this by setting akka.http.[server|client].parsing.max-content-length or calling HttpEntity.withSizeLimit before materializing the dataBytes stream.)

基本上,我要请求的本地主机上的文件很大。

我试图通过使用withoutSizeLimit来解决它,但是它不起作用:

val request = Get("http://localhost:8080/oa-ok.ntriples")
val limitedRequest = request.withEntity(request.entity.withoutSizeLimit())
val responseFuture = Http().singleRequest(limitedRequest)

我还尝试使用withSizeLimit,但没有帮助。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在响应实体(而不是请求实体)上使用withoutSizeLimit。例如:

val responseFuture: Future[HttpResponse] =
  Http().singleRequest(HttpRequest(uri = "http://localhost:8080/oa-ok.ntriples"))

val responseSource: Source[ByteString, NotUsed] =
  Source.fromFuture(responseFuture)
    .flatMapConcat(_entity.withoutSizeLimit.dataBytes)

responseSource是响应实体的Akka流Source