在喷雾客户端的请求级别 api 中处理 http 响应



我正在使用spray client的请求级别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失败了。

我不确定为什么会发生这种情况以及如何解决相同的问题。

我认为

这对你有帮助http://spray.io/documentation/1.2.2/spray-client/

val response: Future[HttpResponse] = pipeline(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~)

最新更新