Web Services 如何在Playframework 2 / Scala中使用WS API进行带有空正文请求的http post?

9bfwbjaz  于 2022-11-15  发布在  Scala
关注(0)|答案(3)|浏览(168)

我尝试使用Play 2/Scala WS API向服务端点发送HTTP POST请求。

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

我已经尝试了post()没有参数,但它给了我一个错误。
无法将Unit的示例写入HTTP响应。请尝试定义Writeable[Unit]
你能帮忙吗?
提前感谢...

bxpogfeg

bxpogfeg1#

由于post等待实现WriteableContentTypeOf类型类的值,因此可以使用play.api.mvc中的Results.EmptyContent。(请参阅API)
所以我猜

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

应该可以。(未测试)

j9per5c4

j9per5c42#

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

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

典型错误为:

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
fnvucqvd

fnvucqvd3#

从Play 2.8开始,不能使用WSRequest.post(body)方法的空体,因为BodyWritable特性需要非空的Content-Type
相反,您可以执行ws.url(u).execute("POST")来发送不带正文的HTTP POST请求。

相关问题