FormData被转换为JSON

时间:2015-12-26 22:23:01

标签: scala spray json4s

我正在尝试使用Spray发布到服务

var authenticationPipeline: HttpRequest => Future[Authentication] = sendReceive ~> unmarshal[Authentication]

我有一个管道设置,期望返回一种身份验证(案例类)并解组它。很直接。

构建请求时,我尝试使用以下模式。

val fD = FormData(Seq(
    "grant_type" -> "authorization_code",
    "code" -> authorisation_code,
    "redirect_uri" -> "http://www.example.com",
    "client_id" -> apiClientId,
    "client_secret" -> apiClientSecretKey
))

我就是这样发送的。

authenticationPipeline(Post(oauthUrl, fD))

问题是我发布的服务返回了不支持的媒体类型错误,经过进一步检查,看起来http enitity的媒体/内容类型是json,内容是json字符串。

我已经解决了这个问题,使用URLEncode并通过手动构建HTTP请求发布这个原始字符串,问题是现在我遇到了编码问题而且它不是很干净的代码。我想我只是不确定为什么这种情况几乎是隐含的。

以下链接影响了我如何设置,但未提及类似问题,https://groups.google.com/forum/#!topic/spray-user/JjA2LCLfib8& Posting application/x-www-form-urlencoded using spray

任何关于我可能做错的指示都将不胜感激。如果我遗漏了任何重要信息,请告诉我。

提前致谢!

1 个答案:

答案 0 :(得分:0)

通过单独测试我的代码,我能够确定我的一个导入是否引入了一个隐式JSON编组器。通过更具体的导入我能够克服这个问题。希望这有助于将来的某个人!