2016-10-18 309 views
1

通過播放WS API目前,我發送GET請求如下:發送POST請求

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

現在我想改變這種調用使用HTTP帖子。當調用以下:

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

我收到以下錯誤:

Cannot write an instance of Seq[(String, String)] to HTTP response. Try to define a Writeable[Seq[(String, String)]]

我想這是因爲getParams返回Seq[(String, String)]的方法。

我該如何解決這個問題?

+0

您應該結束與'。員額()'你調用的代碼...查看[文檔](https://www.playframework.com/documentation/2.5.x/ScalaWS#Request-with-additional-headers)。 –

+0

謝謝你的迴應。我用'post(getParams():_ *)'替換'get()'並移除了'.withBody(getParams():_ *)'但我仍然得到相同的錯誤。 –

+0

也'.withBody(getParams():_ *)'是錯誤的。你是作爲**身體發送**,一些JSON,XML?查詢字符串只是像'?id = 5&name = whatever'這樣的URL參數。 –

回答

1

當使用HTTP POST鍵值對正在使用的內容類型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("&")) 
+0

完美!非常感謝!祝你今天愉快。 –