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 错误,我不知道为什么。我无法在上面的代码中打印整个 body 错误。
当我通过 POSTMAN 进行相同的 REST 调用时,我可以看到 400 Bad request 错误 body
{
"errors": [
"password: field is required",
"username: field is required"
]
}
如何在我的代码中打印整个错误 body?
此外,在 postman 中,当我设置 Content-Type 并接受 headers 时,post 调用成功。在上面的代码中,我设置了相同的 2 headers 和相同的 json body 但此代码仍然出现 400 错误。
val list = List[Header](Header("Accept", "application/json"), Header("Content-Type", "application/json"))
val req = POST(uri, form).map(_.replaceAllHeaders(list :_*))
我在 gitter 上与 http4s 团队进行了交谈,我找到了答案。由于该对话未被 google 索引,因此我将答案写在此处
val output : Either[String, Foo] = client.fetch(request) {
case Successful(resp) => resp.as[Foo].map(Right(_))
case resp => resp.as[String].map(Left(_))
}
这个如果有错误。我们得到了错误的全部内容。
我编写此代码是为了使用 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 错误,我不知道为什么。我无法在上面的代码中打印整个 body 错误。
当我通过 POSTMAN 进行相同的 REST 调用时,我可以看到 400 Bad request 错误 body
{
"errors": [
"password: field is required",
"username: field is required"
]
}
如何在我的代码中打印整个错误 body?
此外,在 postman 中,当我设置 Content-Type 并接受 headers 时,post 调用成功。在上面的代码中,我设置了相同的 2 headers 和相同的 json body 但此代码仍然出现 400 错误。
val list = List[Header](Header("Accept", "application/json"), Header("Content-Type", "application/json"))
val req = POST(uri, form).map(_.replaceAllHeaders(list :_*))
我在 gitter 上与 http4s 团队进行了交谈,我找到了答案。由于该对话未被 google 索引,因此我将答案写在此处
val output : Either[String, Foo] = client.fetch(request) {
case Successful(resp) => resp.as[Foo].map(Right(_))
case resp => resp.as[String].map(Left(_))
}
这个如果有错误。我们得到了错误的全部内容。