Scala / Java中的Chunked下载

时间:2015-07-26 22:11:50

标签: java scala youtube chunked

我使用youtube-dl获取YouTube视频的二进制流的网址,无论出于何种原因我想要下载,我这样做:

youtube-dl -f bestaudio -g --skip-download https://www.youtube.com/watch?v=nk5YtLYcH74

获得网址后,我卷曲它,不知怎的样子:

https://r6---sn-gqn-vhgl.googlevideo.com/videoplayback\?id\=afe82f21e356....

或者我当然可以将输出转发到文件中,但这只是为了解释。我想下载它,但不是使用curl,而是使用Scala HTTP客户端,现在akka-http。但那样我得到了:

IllegalResponseException: Response Content-Length 195022703 exceeds the configured limit of 8388608

我知道这是一个很大的流,但curl是如何自动完成的?它如何请求块,或者它是如何工作的,我应该如何在Scala / Java中编写它?

一些代码和more

val connectionFlow = Http().outgoingConnectionTls(hostname)
val responseFuture =
  Source.single(HttpRequest(uri = path, method = GET))
    .via(connectionFlow)
    .runWith(Sink.foreach[HttpResponse] { r =>
      logger.info(s"${r.status}")
  })

1 个答案:

答案 0 :(得分:1)

akka-http的默认内容长度为8M。

在application.conf文件中增加akka http客户端解析的max-content-length值,它应该可以正常工作。

akka.http.client.parsing.max-content-length =78m

有关此链接的配置和信息的更多信息 http://doc.akka.io/docs/akka-stream-and-http-experimental/1.0/scala/http/configuration.html