1

我正在尝试做相当于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街区看到任何东西。使用 Newman 进行 POST 的正确方法是什么?

4

1 回答 1

2

在评论之后,我的猜测是,这与期货和线程评级有关,而不是纽曼。

我认为主线程在未来完成之前关闭,这意味着当未来完成并执行回调时,发布结果的主线程不再响应,使用Await修复此问题但您必须阻止您的应用程序实现这一目标。这也可能取决于您使用注册回调ExecutionContextscala.concurrent位置,您可能必须使用不同的方法来避免这种行为,尽管我会坚持:

Await.result(result, Duration.Inf) // maybe use a non infinite duration here
于 2014-08-21T20:40:59.613 回答