我正在使用play-ws standalone来使用scala中的REST服务。
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)
}
当我运行这段代码时,我得到以下错误,
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的新手。有谁能帮帮我。提前谢谢。
发布于 2017-07-04 00:40:45
您需要为json对象导入BodyWritables,将以下导入语句添加到源文件中
import play.api.libs.ws.JsonBodyReadables._
import play.api.libs.ws.JsonBodyWritables._
有关更多信息,请查看official documentation
发布于 2019-06-27 07:23:42
当前接受的答案在Scala Play 2.7.x (可能还有一些更早的版本)中不起作用。
我在文档中找不到它,但您需要显式地调用ws对象上的asScala。例如:
val data = Json.obj("message" -> "How are you?")
ws
.asScala()
.url("http://someurl.com")
.post(data)
.map(response => {
//do something with response
})
注意:这也会返回一个scala的未来,而不是一个java完成阶段。
https://stackoverflow.com/questions/44888530
复制相似问题