Я пытаюсь отправить сообщение в службу с помощью спрея
var authenticationPipeline: HttpRequest => Future[Authentication] = sendReceive ~> unmarshal[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-объекта - json, а контент - строка json.
Я обошел эту проблему, используя URLEncode и опубликовав эту необработанную строку, вручную создав HTTP-запрос, проблема в том, что теперь у меня проблема с кодировкой, и это просто не очень чистый код. Я думаю, я просто не уверен, почему это происходит почти неявно.
Следующие ссылки повлияли на то, как я это настроил, но не упоминают похожие проблемы, https://groups.google.com/forum/#!topic/spray-user/JjA2LCLfib8 и Публикация приложения/x-www-form-urlencoded с использованием спрея
Любые указатели на то, что я могу делать неправильно, будут оценены. Пожалуйста, дайте мне знать, если я упустил какую-либо важную информацию.
Заранее спасибо!