我正在尝试向一个XML服务发出一个简单的POST请求,该请求在Scala中返回一些XML。
似乎Dispatch是用于此任务的标准库,但我找不到它的文档。我在上面链接的主站点详细解释了什么是promise以及如何进行异步编程,但实际上并没有记录API。有一个看起来有点吓人的periodic table,但它似乎只对那些已经知道该做什么的人有用,并且只需要提醒一下隐秘的语法。
它似乎也是Scalaz has some facility for HTTP,但我也找不到任何关于它的文档。
发布于 2012-07-30 19:20:23
我使用以下代码:https://github.com/scalaj/scalaj-http。
下面是一个简单的GET请求:
import scalaj.http.{Http, HttpOptions}
Http("http://example.com/search").param("q", "monkeys").asString
还有一个帖子的例子:
val result = Http("http://example.com/url").postData("""{"id":"12","json":"data"}""")
.header("Content-Type", "application/json")
.header("Charset", "UTF-8")
.option(HttpOptions.readTimeout(10000)).asString
Scalaj HTTP可以通过SBT获得:
libraryDependencies += "org.scalaj" % "scalaj-http_2.11" % "2.3.0"
发布于 2014-10-08 02:43:42
您可以使用spray-client。虽然缺少文档(我花了一些时间才找到how to make GET requests with query parameters),但如果你已经在使用spray,这是一个很好的选择。而且文档比调度更好。
我们在AI2中通过dispatch使用它,因为运算符符号较少,并且我们已经在使用spray/actors。
import spray.client.pipelining._
val url = "http://youruri.com/yo"
val pipeline: HttpRequest => Future[HttpResponse] = sendReceive
// Post with header and parameters
val responseFuture1: Future[String] = pipeline(Post(Uri(url) withParams ("param" -> paramValue), yourPostData) map (_.entity.asString)
// Post with header
val responseFuture2: Future[String] = pipeline(Post(url, yourPostData)) map (_.entity.asString)
发布于 2012-07-30 19:33:04
我使用的是dispatch:http://dispatch.databinder.net/Dispatch.html
他们刚刚发布了一个新版本(0.9.0),带有一个我非常喜欢的全新api。而且它是异步的。
来自项目页面的示例:
import dispatch._
val svc = url("http://api.hostip.info/country.php")
val country = Http(svc OK as.String)
for (c <- country)
println(c)
编辑:这可能会帮助你编辑https://github.com/dispatch/reboot/blob/master/core/src/main/scala/requests.scala
https://stackoverflow.com/questions/11719373
复制相似问题