使用Akka http通过请求传递数据

时间:2017-11-07 14:23:56

标签: java scala akka akka-http

我是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”)以及请求。想法?

1 个答案:

答案 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))