Как сделать 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
Другие вопросы по тегам