簡體   English   中英

在Scala中使用play ws的POST請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM