首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Scala中执行HTTP请求

在Scala中执行HTTP请求
EN

Stack Overflow用户
提问于 2012-07-30 18:11:03
回答 9查看 111K关注 0票数 78

我正在尝试向一个XML服务发出一个简单的POST请求,该请求在Scala中返回一些XML。

似乎Dispatch是用于此任务的标准库,但我找不到它的文档。我在上面链接的主站点详细解释了什么是promise以及如何进行异步编程,但实际上并没有记录API。有一个看起来有点吓人的periodic table,但它似乎只对那些已经知道该做什么的人有用,并且只需要提醒一下隐秘的语法。

它似乎也是Scalaz has some facility for HTTP,但我也找不到任何关于它的文档。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-07-30 19:20:23

我使用以下代码:https://github.com/scalaj/scalaj-http

下面是一个简单的GET请求:

代码语言:javascript
复制
import scalaj.http.{Http, HttpOptions}

Http("http://example.com/search").param("q", "monkeys").asString

还有一个帖子的例子:

代码语言:javascript
复制
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获得:

代码语言:javascript
复制
libraryDependencies += "org.scalaj" % "scalaj-http_2.11" % "2.3.0"
票数 142
EN

Stack Overflow用户

发布于 2014-10-08 02:43:42

您可以使用spray-client。虽然缺少文档(我花了一些时间才找到how to make GET requests with query parameters),但如果你已经在使用spray,这是一个很好的选择。而且文档比调度更好。

我们在AI2中通过dispatch使用它,因为运算符符号较少,并且我们已经在使用spray/actors。

代码语言:javascript
复制
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)
票数 7
EN

Stack Overflow用户

发布于 2012-07-30 19:33:04

我使用的是dispatch:http://dispatch.databinder.net/Dispatch.html

他们刚刚发布了一个新版本(0.9.0),带有一个我非常喜欢的全新api。而且它是异步的。

来自项目页面的示例:

代码语言:javascript
复制
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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11719373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档