正在将FormData转换为JSON



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

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

我有一个管道设置,它期望返回一种类型的Authentication(一个case类)并对其进行解组。很直接。

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

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 enity的媒体/内容类型似乎是json,内容是json字符串。

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

以下链接影响了我的设置方式,但没有提及类似的问题,https://groups.google.com/forum/#!主题/喷雾用户/JjA2LCLfib8&张贴申请/x-www-form-urled using spray

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

提前感谢!

通过隔离测试我的代码,我能够确定我的一个导入引入了一个隐式JSON整理器。通过对我的进口更加具体,我能够克服这个问题。希望这对将来的人有所帮助!

最新更新