我想使用scala dispatch库向Lift中的服务器发送一个post请求。
我想向外部服务器发送帖子请求并获取一些信息,然后在我的网络应用中使用这些信息。
我该怎么做?
答案 0 :(得分:0)
电梯GitHub Wiki(正由Assembla one取代)的article on using Dispatch与您所寻求的一致。
答案 1 :(得分:0)
这是一个将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
- &gt; json指定调用
event.payload
- &gt; PUT和POST的json有效负载
http x
- &gt; http://databinder.net/dispatch-doc/#dispatch.Http
>:>
- &gt; http://databinder.net/dispatch-doc/#dispatch.HandlerVerbs
<<
,<<<
,<:<
- &gt; http://databinder.net/dispatch-doc/#dispatch.RequestVerbs
这使用Lift JSON解析调用规范并在Akka actor中执行。 状态,标题和内容将返回给调用者。