playframework-2.6:方法的参数不足:

时间:2019-02-08 10:41:24

标签: scala playframework playframework-2.6

我正在使用Play-Framework-2.6,但出现此错误  /myproject/app/controllers/Application.scala:151:不够

arguments for method apply: (data: akka.stream.scaladsl.Source[akka.util.ByteString, _], contentLength: Option[Long], contentType: Option[String])play.api.http.HttpEntity.Streamed in object Streamed.
[error] Unspecified value parameters contentLength, contentType.
[error]         body = HttpEntity.Streamed(responseStream)
[error]                                   ^

这是我的代码

def prometheusMetrics = Action {
    val responseStream = Concurrent.unicast[Array[Byte]] { channel =>
      val writer = new WriterAdapter(channel)
      TextFormat.write004(writer, CollectorRegistry.defaultRegistry.metricFamilySamples())
      writer.close()
    }
    Result(
     header = ResponseHeader(200, Map.empty),
        body = HttpEntity.Streamed(responseStream)
  ).as(TextFormat.CONTENT_TYPE_004)
  }

我对此进行了研究,但没有找到合适的解决方案。请指导我

更新#1 用户@James Whiteley给出的答案

Result(
     header = ResponseHeader(200, Map.empty),
        body = HttpEntity.Streamed(responseStream, None, None)
  ).as(TextFormat.CONTENT_TYPE_004)

我正在

type mismatch;
[error]  found   : play.api.libs.iteratee.Enumerator[Array[Byte]]{implicit val pec: scala.concurrent.ExecutionContext}
[error]  required: akka.stream.scaladsl.Source[akka.util.ByteString, _]
[error]         body = HttpEntity.Streamed(responseStream, None, None)

1 个答案:

答案 0 :(得分:1)

HttpEntity.Streamed似乎采用三个参数,而不是一个。试试

body = HttpEntity.Streamed(responseStream, None, None)

如果您不想指定contentLengthcontentType-这些是可选参数,但仍需要定义。