因此,您可以找到的here的Play文档为GET调用提供了一个非常简单的示例,没有像auth标头或参数那样的内容。
有人可以帮我弄清楚如何使用类似的策略来处理更复杂的事情,例如需要使用JSON数据的POST请求作为body和auth标头吗?我现在无法让它工作。
我想知道如何使用ws测试客户端来执行外部http请求。
由于
答案 0 :(得分:0)
以下是我的一个项目代码片段,它通过twilio api发送短信:
class SmsServiceImpl @Inject()(config: Configuration, ws: WSClient) extends SmsService {
val twilloAccountSid = config.getString("twillo.accountSid").get
val twilloAuthToken = config.getString("twillo.authToken").get
val smsApiUrl = config.getString("twillo.apiBaseUrl").get + "/" +twilloAccountSid+"/Messages.json"
override def send(phone: String, message: String): Future[Unit] = {
val data = Map(
"To" -> Seq(phone),
"From" -> Seq(config.getString("twillo.fromPhone").get),
"Body" -> Seq(message)
)
val response: Future[WSResponse] = ws.url(smsApiUrl).withAuth(twilloAccountSid, twilloAuthToken, WSAuthScheme.BASIC).post(data)
response.map { response =>
response.status match {
case 201 => Unit
case _ => throw new SmsSendingException(s"Failed to send sms. Got https status: ${response.status}")
}
}
}
这是带有身份验证的POST请求。