How to http post with an empty body request using WS API in Playframework 2 / Scala?

Since post awaits a value that implements the Writeable and ContentTypeOf type classes, you can use the Results.EmptyContent from play.api.mvc. (See API)

So I guess

WS.url("http://service/endpoint").post(Results.EmptyContent())

should do. (Didnt test)


For Play 2.6 and after, you have to use play.api.libs.ws.EmptyBody.

import play.api.libs.ws.{EmptyBody, WSClient}
WS.url("http://service/endpoint).post(EmptyBody)

Typical error is:

Cannot find an instance of play.api.mvc.Results.EmptyContent to WSBody. Define a BodyWritable[play.api.mvc.Results.EmptyContent] or extend play.api.libs.ws.ahc.DefaultBodyWritables

As of Play 2.8, you cannot use the WSRequest.post(body) methods with an empty body, because the BodyWritable trait requires a non-empty Content-Type

Instead, you can do ws.url(u).execute("POST") to send an HTTP POST request with no body.