2016-10-18 5 views
1

次のように現在、私がプレイWS APIを介してGETリクエストを送信しています:体内のパラメータを使用して送信POSTリクエストに

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

今、私はHTTPポストを使用するには、このコールを変更したいです。以下を呼び出す場合:私はSeq[(String, String)]を返すgetParams方法からだと推測

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

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

私は、次のエラーメッセージが表示されます。

どうすればこの問題を解決できますか?ポストキーと値のペアは、コンテンツタイプここでapplication/x-www-form-urlencoded

を使用して送信されるHTTPを使用する場合

+0

を投稿するためのコードです...参照してください。 [docs](https://www.playframework.com/documentation/2.5.x/ScalaWS#Request-with-additional-headers)。 –

+0

ありがとうございます。私は 'get()'を 'post(getParams():_ *)'に置き換え、 '.withBody(getParams():_ *)'を削除しました。 –

+0

また、 '.withBody(getParams():_ *)'は間違っています。** body **、JSON、XMLとして何を送信していますか?クエリ文字列は '?id = 5&name = whatever'のようなURLパラメータです。 –

答えて

1

あなたは `.post()`を使用して通話を終了する必要があり

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

パーフェクト!どうもありがとうございます!良い一日を。 –

関連する問題