【问题标题】:Sending a HTTP request in Scala在 Scala 中发送 HTTP 请求
【发布时间】:2014-04-22 07:51:43
【问题描述】:

如何发送HTTP请求

https://www.googleapis.com/language/translate/v2?

在 scala 中解析这个 JSON 格式的响应。

提前致谢,

【问题讨论】:

  • 到目前为止你尝试过什么?尝试逐步解决个别问题。关于 HTTP 请求,您查看了哪些资源,哪些资源有效/无效?
  • 我尝试了 Dispatch 框架,即使我尝试添加 Thread.Sleep 也无济于事。但没有奏效。 :(
  • 我建议这个库用于 HTTP GET:github.com/scalaj/scalaj-http,这个:github.com/json4s/json4s 用于 JSON 操作。

标签: scala


【解决方案1】:

这是一个基于 DispatchJSON4s

的示例
import dispatch._
import Defaults._

import org.json4s._
import org.json4s.jackson.JsonMethods._

val translateAPI = url("https://www.googleapis.com/language/translate/v2/")

val response = Http( translateAPI OK as.String)

val json = parse( response() ) //() is added by Dispatch and forces to await the result forever ==     Await.result(response , forever)

要获取库,您需要将以下内容添加到构建文件中。 : sbt 的例子

libraryDependencies += "org.json4s" %% "json4s-jackson" % "3.2.8"

libraryDependencies += "net.databinder.dispatch" %% "dispatch-core" % "0.11.0"

您在示例中提供的 URL 缺少参数和凭据,如果没有这些参数和凭据,您将收到 400- 错误。但如果你能解决这个问题,它应该可以工作。

【讨论】:

  • 是的。我试过在spray-client和Dispath中都出现超时异常。我通过从浏览器点击URI进行检查,它工作正常。后来我意识到我的程序是在代理后面运行的。我该如何克服这种情况。
  • 看看stackoverflow.com/questions/14253515/…,问题就解决了。
【解决方案2】:

这是一个基于 Scruffy Client

的替代示例
val client = ScruffyClient()

val resp = client.prepareGet("https://www.googleapis.com/language/translate/v2").execute()

val entityAsString = resp.bodyAsString

val marshalledJson = resp.bodyAs[MyCaseClass]

你需要导入:

libraryDependencies += "com.sksamuel.scruffy" %% "scruffy-client" % "1.2.5"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2016-11-13
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多