【问题标题】:How to check for 200 OK response status using Scala and Play Framework如何使用 Scala 和 Play 框架检查 200 OK 响应状态
【发布时间】:2016-01-27 21:54:48
【问题描述】:

我有一个以下 Actor 类,它负责使用 POST 将 JSON 消息发送到 URL。

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

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

【问题讨论】:

    标签: scala playframework httprequest httpresponse


    【解决方案1】:

    简单地说:

    import play.api.http.Status
    
    if(result.status == Status.OK) {
      // ...
    }
    

    【讨论】:

    • 我试过了,上面写着cannot resolve symbol OK。我也有import play.api.mvc.Result._,但对我不起作用
    • 你需要:import play.api.http.Status
    【解决方案2】:

    也许我在这里遗漏了一些东西,但您的回复中有“状态”。 所以你可以这样做:

    WS.url(url).withHeaders("Content-Type" -> "application/json").post(message).map{
        case response if ( response.status == OK) => //DO SOMETHING?
    }
    

    【讨论】:

    • 您的解决方案中的response 是什么?
    • post(message)的结果,你可以试试。
    猜你喜欢
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多