Я использую spray-client
для доступа к службе REST. Часть данных, возвращаемых сервером, находится в заголовках ответа http (остальные — в теле ответа).
Чтобы иметь возможность разобрать ответ, я использую Unmarshaller
. Однако демаршаллер может получить доступ только к телу ответа (как экземпляру HttpEntity
), и все заголовки на этом этапе кажутся недоступными.
Вот текущий конвейер и коды unmarshaller:
implicit val IDsUnmarshaller =
Unmarshaller[List[ID]](MediaTypes.`text/plain`) {
case HttpEntity.NonEmpty(contentType, data) =>
data.asString.split("\n").toList.map( ID(_) )
}
val pipeline: HttpRequest => Future[List[ID]] = (
encode(Gzip)
~> sendReceive
~> decode(Deflate)
~> unmarshal[List[ID]]
)
Есть ли способ получить к ним доступ при распаковке? Есть ли работа вокруг?
FromResponseUnmarshaller
вместо простогоUnmarshaller
, у вас также будет доступ к заголовкам. - person jrudolph   schedule 25.02.2014FromResponseUnmarshaller
? - person paradigmatic   schedule 25.02.2014FromResponseUnmarshallers
см. в этом файле: https://github.com/spray/spray/blob/master/spray-httpx/src/main/scala/spray/httpx/unmarshalling/Deserializer.scala - person jrudolph   schedule 25.02.2014HttpResponse => List[ID]
, и ее следует подобрать. - person jrudolph   schedule 25.02.2014