Обработка http ответа в API уровня запроса в спрей-клиенте
Я использую API уровня запроса спрей для запроса сервера.
Это мой код:
var request: HttpRequest = HttpRequest(method, uri, headers, HttpEntity(MediaTypes.`application/json`, json.toString()))
val result = for {
resp <- io.ask(request).mapTo[HttpResponse]
} yield {
println("Response:" + resp)
}
result onComplete {
case Success(value) => println("success" + value)
case Failure(ex) => println("failure" + ex)
}
Я не получаю ответ, как ожидалось. Контекст выполнения собирается в сбой. Я получаю ChunkedResponseStart(HttpResponse(200 OK,Empty,List(Transfer-Encoding: chunked)
вместо самого HttpResponse и mapTo не работает.
Я не уверен, почему это происходит и как решить то же самое.
1 ответ
Я думаю, что это поможет вам http://spray.io/documentation/1.2.2/spray-client/
val response: Future [HttpResponse] = pipe (Get (" http://spray.io/"))
Вы можете написать что-то вроде этого
val req: Future[HttpResponse] = pipeline(Post("http://localhost:xxxx/...")
.withHeaders(RawHeader("Name", param))
.withEntity(HttpEntity("application/json", data.toJson.toString())))
и извлечь
def extract(req: Future[HttpResponse]): HttpResponse = Await.result(req, 40.seconds)
чтобы получить информацию, которую вы можете использовать
def getStatusCode(response: HttpResponse) = response.status.intValue
а также
if(getStatusCode(response) == 200) println(~better use same test lib or match~)