盯着Spray库,我试图向Facebook Graph API发出请求:
val responseF: Future[HttpResponse] = pipeline(Get("http://graph.facebook.com/v2.1/facebook/picture?redirect=false"))
def receive = {
case _ =>
val originalSender = sender()
responseF onComplete{
case Success(response) =>
log.info(response.toString)
originalSender ! response.toString
log.info( """|Response for GET request
|status : {}
|headers: {}
|body : {}""".stripMargin,
response.status.value, response.headers.mkString("\n ", "\n ", ""), response.entity.asString)
case Failure(error) =>
log.error(error, "Could not get Facebook stuff")
originalSender ! "not working"
}
}
主要问题是响应的内容类型是
Content-Type: text/javascript; charset=UTF-8
而不是预期的application/json
我的要求到底出了什么问题?
由于Spray
在很大程度上依赖于内容类型进行解析等。
答案 0 :(得分:3)
简单的解决方案是只添加一个接受标题,但我无法弄清楚如何:
pipeline(
Get("http://graph.facebook.com/v2.1/facebook/picture?redirect=false").withHeaders(Accept(MediaTypes.`application/json`))
)
感谢关于goolge group的快速回答,我终于得到了正确的内容类型。