gpt4 book ai didi

scala - 喷雾客户端 - 将具有意外内容类型的响应视为应用程序/json?

转载 作者:行者123 更新时间:2023-12-04 23:01:02 25 4
gpt4 key购买 nike

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

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 在解码时忽略它?

最佳答案

在挖掘了喷雾邮件列表之后,我写了一个有效的函数

def mapTextPlainToApplicationJson: HttpResponse => HttpResponse = {
case r@ HttpResponse(_, entity, _, _) =>
r.withEntity(entity.flatMap(amazonEntity => HttpEntity(ContentType(MediaTypes.`application/json`), amazonEntity.data)))
case x => x
}

并在管道中使用它
val pipeline: HttpRequest => Future[IdentityData] = sendReceive ~> mapTextPlainToApplicationJson ~> unmarshal[IdentityData]
pipeline(Get("http://169.254.169.254/latest/dynamic/instance-identity/document"))

很酷的事情是,只要您的拦截函数具有适当的签名,您就可以拦截和更改任何 HttpResponse。

关于scala - 喷雾客户端 - 将具有意外内容类型的响应视为应用程序/json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24489680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com