对于akka路由,我们使用如下完整。完整(的HttpResponse)
这个完整的函数是否只接受来自akka.scalads.HttpResponse或甚至org.apache.http.HttpResponse的HttpResponse。如果它不接受,有人可以解释为什么吗?
答案 0 :(得分:1)
完整参数类型
从the documentation,您可以看到func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var retunValue = 0
switch (mySegmentControll.selectedSegmentIndex){
case 1 :
retunValue = privateList.count
break
case 2:
retunValue = publicList.count
break
case 3:
retunValue = protected.count
break
default :
retunValue = 1;// use this
break
}
return retunValue
}
接受了许多不同的参数类型,包括akka的complete
:
HttpResponse
Apache / Akka响应
但是,Complete不接受apache响应类型。
大多数def complete[T :ToResponseMarshaller](value: T): StandardRoute
def complete(response: HttpResponse): StandardRoute
def complete(status: StatusCode): StandardRoute
def complete[T :Marshaller](status: StatusCode, value: T): StandardRoute
def complete[T :Marshaller](status: Int, value: T): StandardRoute
def complete[T :Marshaller](status: StatusCode, headers: Seq[HttpHeader], value: T): StandardRoute
def complete[T :Marshaller](status: Int, headers: Seq[HttpHeader], value: T): StandardRoute
成员变量很容易与相应的apache变量匹配,但有一个很大的例外:HttpResponse
是akka-stream ResponseEntity
。 apache HttpEntity
使用Source[ByteString, Any]
来表示非akka / stream感知的数据,因此如果没有预先存在的akka InputStream
,则无法进行直接翻译。
可以从apache http响应编写自己的implicit conversion function到akka http响应,这将允许您传递apache响应以完成:
ActorSystem