现在我在Scala中构建一个小型API,它使用Spray.IO框架来处理请求。响应。
当调用我的/更新URL时,我想调用另一个API来处理实际更新,以及此请求我想添加一些JSON数据。
为此,我使用以下代码:
val message: String = "{\"elements\":[{\"id\":\"2\",\"attributes\":[{\"name\":\"value\",\"type\":\"float\",\"value\":\"46\"}]}],\"updateAction\":\"UPDATE\"}"
val url: String = "http://[domain]/update"
val pipeline: HttpRequest => Future[HttpResponse] = sendReceive
val response: Future[HttpResponse] = pipeline(
Post(url, message)
~> addHeaders(List(
RawHeader("Content-Type", "application/json")
))
)
response onComplete { completedResponse =>
println("Response: "+completedResponse.get.message.entity.asString)
}
但是当我检查日志时,我可以看到Content-Type实际上设置为text/plain; charset=UTF-8
,这是因为Spray IO Client实际上确定了Content-Type本身。
所以我的问题是;我怎样才能让Spray IO真正将我的消息识别为Content-Type:application/json
..
有什么想法?非常感谢:)
答案 0 :(得分:3)
您应该使用正确的ContentType创建HttpEntity:
Post(url, HttpEntity(ContentTypes.`application/json`, message))
在文档http://spray.io/documentation/1.2.3/spray-http/#content-type-header
中解释了这个问题