如何用纽曼做POST请求?

时间:2014-08-21 20:04:30

标签: scala 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块中的任何内容。使用Newman进行POST的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

根据评论,我的猜测是这与期货和线程有关,而不是纽曼。

我认为主线程在未来完成之前关闭,这意味着当未来完成和回调执行时,发布结果的主线程不再响应,使用Await修复此问题但你必须阻止你的应用程序来实现这一目标。这可能还取决于您使用注册回调的ExecutionContext给出的scala.concurrent,并且您可能必须使用另一个来避免这种行为,对于您的情况,尽管我会坚持:< / p>

Await.result(result, Duration.Inf) // maybe use a non infinite duration here