如何在Playframework 2/Scala中使用WS API使用空体请求发布http帖子?

kaf*_*ein 19 rest web-services scala http-post playframework-2.0

我尝试使用Play2/Scala WS API向服务端点发送HTTP POST请求.由于HTTP POST正文中没有要发送的参数,我该如何使用它发送

WS.url("http://service/endpoint).post()
Run Code Online (Sandbox Code Playgroud)

我试过post()没有争论,但它给了我一个错误.

无法将单元实例写入HTTP响应.尝试定义可写[单位]

你能帮忙吗?

提前致谢...

Mar*_*ing 29

由于post等待实现WriteableContentTypeOf类类的值,您可以使用Results.EmptyContentfrom play.api.mvc.(见API)

所以我想

WS.url("http://service/endpoint").post(Results.EmptyContent())
Run Code Online (Sandbox Code Playgroud)

应该做.(没有测试)


小智 23

对于Play 2.6及之后,您必须使用play.api.libs.ws.EmptyBody.

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

典型错误是:

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
Run Code Online (Sandbox Code Playgroud)