如何使用 Scala 和 Play Framework 检查 200 OK 响应状态
How to check for 200 OK response status using Scala and Play Framework
我有一个跟随者 class 负责使用 POST
.
向 URL 发送 JSON 消息
import play.api.libs.ws._
class Worker extends Actor {
val logger: Logger = Logger("superman")
val supermanURL = "http://localhost:9000/superman/send"
def receive = {
case message: JsValue => {
val transactionID = (message \ "transactionID").get
println("Received JSON Object =>" + message)
val responseFromSuperman = WS.url(supermanURL).withHeaders("Content-Type" -> "application/json").post(message)
responseFromSuperman.map(
result => {
//TODO: Make sure to only log if response status is 200 OK
logger.info("""Message="ACK received from Superman" for transactionID=""" + transactionID)}
).recover { case error: Throwable =>
logger.error("""Message="NACK received from Superman" for transactionID=""" + transactionID) + " errorMessage:" + error.getLocalizedMessage()
}
}
}
}
所以,如果您查看我上面的 TODO
,我想添加一个响应类型 200 OK 的检查。当前的实现没有这样做,即使我手动发送 BadRequest
,它也会记录消息。我尝试检查 result.allHeaders
其中 returns:
Map(Date -> Buffer(Wed, 27 Jan 2016 21:45:31 GMT), Content-Type -> Buffer(text/plain; charset=utf-8), Content-Length -> Buffer(7))
但没有关于响应状态的信息200 OK
简单:
import play.api.http.Status
if(result.status == Status.OK) {
// ...
}
也许我在这里遗漏了一些东西,但您的回复 "status"。
所以你可以这样做:
WS.url(url).withHeaders("Content-Type" -> "application/json").post(message).map{
case response if ( response.status == OK) => //DO SOMETHING?
}
我有一个跟随者 class 负责使用 POST
.
import play.api.libs.ws._
class Worker extends Actor {
val logger: Logger = Logger("superman")
val supermanURL = "http://localhost:9000/superman/send"
def receive = {
case message: JsValue => {
val transactionID = (message \ "transactionID").get
println("Received JSON Object =>" + message)
val responseFromSuperman = WS.url(supermanURL).withHeaders("Content-Type" -> "application/json").post(message)
responseFromSuperman.map(
result => {
//TODO: Make sure to only log if response status is 200 OK
logger.info("""Message="ACK received from Superman" for transactionID=""" + transactionID)}
).recover { case error: Throwable =>
logger.error("""Message="NACK received from Superman" for transactionID=""" + transactionID) + " errorMessage:" + error.getLocalizedMessage()
}
}
}
}
所以,如果您查看我上面的 TODO
,我想添加一个响应类型 200 OK 的检查。当前的实现没有这样做,即使我手动发送 BadRequest
,它也会记录消息。我尝试检查 result.allHeaders
其中 returns:
Map(Date -> Buffer(Wed, 27 Jan 2016 21:45:31 GMT), Content-Type -> Buffer(text/plain; charset=utf-8), Content-Length -> Buffer(7))
但没有关于响应状态的信息200 OK
简单:
import play.api.http.Status
if(result.status == Status.OK) {
// ...
}
也许我在这里遗漏了一些东西,但您的回复 "status"。 所以你可以这样做:
WS.url(url).withHeaders("Content-Type" -> "application/json").post(message).map{
case response if ( response.status == OK) => //DO SOMETHING?
}