我是Scala / Akka的新手,我有一个服务,我想用Akka Scaladsl打电话。使用curl,我可以像这样调用服务:
curl -v -d "STRING_DATA" -X GET http://localhost:3838/query?format=json
我知道我可以使用Scaladsl调用这样的服务:
Http().singleRequest(HttpRequest(uri = "http://localhost:3838/query?format=json"))
responseFuture onComplete {
case Success(response) => {
// Do something with the response here..
}
}
我不确定如何通过HttpRequest
传递“数据”(“STRING_DATA”)以及请求。想法?
答案 0 :(得分:2)
curl -v -d "STRING_DATA" -X GET http://localhost:3838/query?format=json
上面的命令发出一个带有application/x-www-form-urlencoded
内容类型的GET请求(如果省略了-X GET
,由于-d
参数,该命令将是POST。使用FormData
是在Akka HTTP中建模application/x-www-form-urlencoded
数据的一种方法:
val ent = FormData(Map("format" -> "json", "data" -> "STRING_DATA")).toEntity
发送包含该数据的POST请求:
Http().singleRequest(HttpRequest(method = HttpMethods.POST,
uri = "http://localhost:3838/query", entity = ent))
发送GET请求:
Http().singleRequest(HttpRequest(uri = "http://localhost:3838/query", entity = ent))