Как сделать POST запрос с Newman?
Я пытаюсь сделать эквивалент curl -XPOST http://example.com -d '{"query":{"term":{"user":"kimchy"}}}'
, Мой код выглядит следующим образом
// this uses dijon
val query = json"""{
"query" : {
"term" : { "user" : "kimchy" }
}
}"""
implicit val httpClient = new ApacheHttpClient
val url = new URL("http://example.com")
val result = POST(url).setBody(query.toString()).apply
result onComplete {
case Success(response) => println(s"************* ${response.toJson().toString()}")
case Failure(t) => println("An error has occured: " + t.getMessage)
case r => println(s"################################### ${r}")
}
println(result)
но я ничего не вижу от onComplete
блок. Какой правильный способ сделать POST, используя Newman?
1 ответ
Следуя комментариям, я предполагаю, что это как-то связано с фьючерсами и темами, которые не так важны, как Ньюман
Я думаю, что основной поток завершает работу до того, как будущее может завершиться, а это означает, что, когда будущее завершается и выполняется обратный вызов, основной поток, в котором публикуются результаты, больше не отвечает, используя Await
исправить эту проблему, но вы должны заблокировать свое приложение для достижения этой цели. Это также может зависеть от того, используете ли вы ExecutionContext
дано scala.concurrent
где обратный вызов зарегистрирован, и вам, возможно, придется использовать другой, чтобы избежать такого поведения, для вашего случая, хотя я бы придерживался:
Await.result(result, Duration.Inf) // maybe use a non infinite duration here