繁体   English   中英

Scala HTTP4s打印整个HTTP错误响应

[英]Scala HTTP4s print entire HTTP Error response

我编写此代码是为了使用http4s客户端库对REST Web服务进行POST调用

val client = SimpleHttp1Client()
val form = UrlForm("username" -> userName, "password" -> password)
val uri = Uri.fromString(url).valueOr(throw _)
val list = List(`Content-Type`(MediaType.`application/json`), Accept(MediaType.`application/json`))
val req = POST(uri, form).map(_.putHeaders(list :_*))
try {
   val result = client.expect[String](req).unsafePerformSync
   Some(result)
} catch {
   case e : Throwable => println(e.getMessage); None
}

现在,该代码收到一个400 Bad Request错误,我不知道为什么。 我无法在上面的代码中显示错误的全部内容。

当我通过POSTMAN进行相同的REST调用时,我可以看到400错误的请求错误正文

{
  "errors": [
    "password: field is required",
    "username: field is required"
  ]
}

如何在代码中打印整个错误正文?

另外,在邮递员中,当我设置Content-Type和Accept标头时,投递成功。 在上面的代码中,我设置了相同的2个标头和相同的json主体,但是此代码仍然会出现400错误。

val list = List[Header](Header("Accept", "application/json"), Header("Content-Type", "application/json"))
val req = POST(uri, form).map(_.replaceAllHeaders(list :_*))

我与http4s小组就gitter进行了交谈,并找到了答案。 由于该对话没有被Google索引,所以我在这里写答案

val output : Either[String, Foo] = client.fetch(request) { 
   case Successful(resp) => resp.as[Foo].map(Right(_))
   case resp => resp.as[String].map(Left(_)) 
}

如果有错误,则为此。 我们由此得到整个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM