FormData преобразуется в JSON

Я пытаюсь отправить сообщение в службу с помощью спрея

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 с использованием спрея

Любые указатели на то, что я могу делать неправильно, будут оценены. Пожалуйста, дайте мне знать, если я упустил какую-либо важную информацию.

Заранее спасибо!


person user3750194    schedule 26.12.2015    source источник


Ответы (1)


Тестируя свой код изолированно, я смог определить, что один из моих импортов вносил неявный маршаллер JSON. Более конкретно с моим импортом я смог преодолеть эту проблему. Надеюсь, это поможет кому-то в будущем!

person user3750194    schedule 28.12.2015