我想使用 scala 调度库向电梯中的服务器发送一个发布请求。
我想向外部服务器发送一个发布请求并获取一些信息,然后在我的网络应用程序中使用这些信息。
我怎样才能做到这一点?
我想使用 scala 调度库向电梯中的服务器发送一个发布请求。
我想向外部服务器发送一个发布请求并获取一些信息,然后在我的网络应用程序中使用这些信息。
我怎样才能做到这一点?
Lift GitHub Wiki(正在被Assembla one取代)有一篇关于根据您的需求使用 Dispatch的文章。
这是一个将 REST 调用分派到服务器的片段:
val http = new Http
val call = parse(event.call)
val verbspec = (call \ "verb").values toString
val urlspec = (call \ "url").values toString
val namespec = (call \ "username").values toString
val pwspec = (call \ "password").values toString
val req = url(urlspec).as(namespec, pwspec) <:< Map("Content" -> "application/json")
val (status: Int, contentWrap, headers) = verbspec match {
case "GET" => {
http x (( req >:> identity ) {
case (200, _, Some(thing), out) => {
val resp = fromInputStream(thing.getContent()).getLines.mkString
(200, Some(resp), out())
}
case (badCode, _, _, out) => (badCode, None, out())
})
}
case "POST" => {
http x (( req.POST << (event.payload) >:> identity ) {case (status, _, _, out) => (status, None, out()) })
}
case "PUT" => {
http x (( req.PUT <<< (event.payload) >:> identity ) {case (status, _, _, out) => (status, None, out()) })
}
case _ => {
EventHandler.error(this, "Bad verb specified")
(000, None, Map.empty)
}
}
在哪里:
event.call
-> json 指定调用
event.payload
-> 用于 PUT 和 POST 的 json 有效负载
http x
-> http://databinder.net/dispatch-doc/#dispatch.Http
>:>
-> http://databinder.net/dispatch-doc/#dispatch.HandlerVerbs
<<
, <<<
, <:<
-> http://databinder.net/dispatch-doc/#dispatch.RequestVerbs
这使用 Lift JSON 来解析调用规范并在 Akka actor 中执行。状态、标题和内容返回给调用者。