【问题标题】:making a GET request to a webservice from the playframework 2.0从 playframework 2.0 向网络服务发出 GET 请求
【发布时间】:2016-03-24 22:58:49
【问题描述】:

我正在尝试从 play 框架调用 web 服务,但我认为我做错了。我有一个示例调用http://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xml

我在 playframework 中尝试的 sn-p 如下:

val response = WS.url("http://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xml").get.get()
val body = response.getBody

当我调用它时,正文由“用户帐户不存在”组成。当我把这个网址放在浏览器中时,我得到了我正在寻找的响应。我在这里做错了什么?

【问题讨论】:

  • 是的,很奇怪,它甚至在使用curl 时也有效。
  • 这里的“val”是什么意思,是游戏课吗?

标签: scala playframework playframework-2.0 webrequest


【解决方案1】:

由于某种原因,我从错误的导入中获取了 WS。当我将导入修复为import play.api.libs.ws.WS 时,它起作用了。我仍然很惊讶它在错误的导入中工作了一半

【讨论】:

  • 播放框架文档提到了另一个导入,但它不起作用。不知道为什么。幸好有人发现了原因。很难弄清楚这一点。
【解决方案2】:

不知道“用户帐户不存在”,但这似乎有效:

  val promise = WS.url("http://www.myweather2.com/developer/forecast.ashx?uac=eDKGlpcBQN&query=52.6%2C-4.4&output=xml").get()
  val body = promise.value.get.body

编辑:删除空格。

还要确保您的编辑器没有在? 之后插入\n\r

【讨论】:

  • promise.value 不适合我。那是play2.0的一部分吗?另外,那个空间应该在后面吗?
  • 对于promise.value,见here
【解决方案3】:

我知道这是旧的,但我只是在尝试做同样的事情时解决了这个问题 - 得到相同的结果。

GET 变量必须通过 WS.url("http://...").setQueryParameter(key, value)

例子:

val promise = WS.url("http://www.myweather2.com/developer/forecast.ashx").setQueryParameter("uac", "eDKGlpcBQN").setQueryParameter("query", "52.6%2C-4.4").setQueryParameter("output", "xml").get()

烦人,但一个相对简单的解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2012-02-22
    • 2012-05-23
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多