当我尝试像这样获取亚马逊身份数据时

val pipeline: HttpRequest => Future[IdentityData] = sendReceive ~> unmarshal[IdentityData]
pipeline(Get("http://169.254.169.254/latest/dynamic/instance-identity/document"))

使用适当的案例类和格式化程序,我收到以下异常

不支持的内容类型(预期的“应用程序/json”)

因为亚马逊将他们的回复标记为文本/纯内容类型。他们也不关心 Accept header 参数。有没有一种简单的方法可以告诉 Spray-json 在解码时忽略它?

最佳答案

如果您想从亚马逊响应中提取一些 IdentityData (这是一个定义了 jsonFormat 的案例类),这是一个有效的 json,但是使用 text/plain 上下文类型,您可以简单地提取文本数据,将其解析为 json 并转换为您的数据,例如:

entity.asString.parseJson.convertTo(identityDataJsonFormat)

10-07 17:12