首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Scala中使用play ws的POST请求

在Scala中使用play ws的POST请求
EN

Stack Overflow用户
提问于 2017-07-03 22:47:34
回答 2查看 4.8K关注 0票数 8

我正在使用play-ws standalone来使用scala中的REST服务。

代码语言:javascript
复制
val data = Json.obj("message" -> "How are you?")
wsClient.url("http://localhost:5000/token").post(data).map { response =>
      val statusText: String = response.statusText
      println(response.body)
    }

当我运行这段代码时,我得到以下错误,

代码语言:javascript
复制
Cannot find an instance of play.api.libs.json.JsObject to WSBody. Define a BodyWritable[play.api.libs.json.JsObject] or extend play.api.libs.ws.ahc.DefaultBodyWritables
    wsClient.url("http://localhost:5000/token").post(data).map { response =>

它告诉我们要定义一个可写的tells。我已经阅读了文档,但无法获得"BodyWritable“。我是scala的新手。有谁能帮帮我。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-04 00:40:45

您需要为json对象导入BodyWritables,将以下导入语句添加到源文件中

代码语言:javascript
复制
import play.api.libs.ws.JsonBodyReadables._
import play.api.libs.ws.JsonBodyWritables._

有关更多信息,请查看official documentation

票数 11
EN

Stack Overflow用户

发布于 2019-06-27 07:23:42

当前接受的答案在Scala Play 2.7.x (可能还有一些更早的版本)中不起作用。

我在文档中找不到它,但您需要显式地调用ws对象上的asScala。例如:

代码语言:javascript
复制
  val data = Json.obj("message" -> "How are you?")
  ws
    .asScala()
    .url("http://someurl.com")
    .post(data)
    .map(response => {
      //do something with response
    })

注意:这也会返回一个scala的未来,而不是一个java完成阶段。

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

https://stackoverflow.com/questions/44888530

复制
相关文章

相似问题

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