![](/img/trans.png)
[英]Using Play for Scala, how do I read in JSON body {a=…,b=…,c…} from POST request?
[英]POST request using play ws in Scala
我使用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 =>
它告訴定義一個bodywritable。 我已閱讀文檔,但沒有得到“BodyWritable”。 我是斯卡拉的新手。 請有人幫幫我。 提前致謝。
您需要為json對象導入BodyWritables,將以下import語句添加到源文件中
import play.api.libs.ws.JsonBodyReadables._
import play.api.libs.ws.JsonBodyWritables._
有關更多信息,請查看官方文檔
當前接受的答案在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 future而不是java completion階段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.