通过Play WS API在body中发送带有参数的POST请求

时间:2016-10-18 17:03:08

标签: scala web-services playframework playframework-2.0

目前,我通过Play WS API发送get请求,如下所示:

wsClient
    .url(myUrl)
    .withQueryString(getParams(): _*)
    .get()

现在我想更改此调用以使用HTTP Post。致电以下人员时:

    wsClient
        .url(myUrl)
        .withMethod("POST")
        .withBody(getParams(): _*)
        .get()

我收到以下错误:

  

无法将Seq [(String,String)]的实例写入HTTP响应。尝试定义可写[Seq [(String,String)]]

我猜是因为方法getParams会返回Seq[(String, String)]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用http发布时,使用内容类型application/x-www-form-urlencoded

发送密钥值对

以下是发布的代码

 client.url(myUrl)
    .withHeaders("Content-type" -> "application/x-www-form-urlencoded")
    .post(getParams.map { case (k, v) => s"$k=$v"}.mkString("&"))