Обработка 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~)
Другие вопросы по тегам