我尝试使用 Play2/Scala WS API 向服务端点发送HTTP POST请求。由于 HTTP POST 正文中没有要发送的参数,我如何使用
WS.url("http://service/endpoint).post()
我试过post()
没有争论,但它给了我一个错误。
无法将 Unit 的实例写入 HTTP 响应。尝试定义一个 Writeable[Unit]
你能帮忙吗?
提前致谢...
我尝试使用 Play2/Scala WS API 向服务端点发送HTTP POST请求。由于 HTTP POST 正文中没有要发送的参数,我如何使用
WS.url("http://service/endpoint).post()
我试过post()
没有争论,但它给了我一个错误。
无法将 Unit 的实例写入 HTTP 响应。尝试定义一个 Writeable[Unit]
你能帮忙吗?
提前致谢...
由于post
await 实现了Writeable
和ContentTypeOf
类型类的值,因此您可以使用Results.EmptyContent
from play.api.mvc
。(见API)
所以我猜
WS.url("http://service/endpoint").post(Results.EmptyContent())
应该做。(没测试)
对于 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
从 Play 2.8 开始,您不能使用WSRequest.post(body)
带有空主体的方法,因为该BodyWritable
trait 需要一个非空的Content-Type
相反,您可以ws.url(u).execute("POST")
发送没有正文的 HTTP POST 请求。