Пустой хэш параметров при выполнении запросов XML. request.content_type действительно является application / xml - PullRequest
1 голос
/ 06 октября 2011

Мои действия ведут себя странно.Все запросы, которые я делаю с типом содержимого XML (через cURL, ActiveResource, как вы его называете), внутри моих действий содержат пустой params[].Я отладил request.content_type, и это application/xml.Отладка request.body.read показывает, что XML, который я отправил в запросе, тоже там.

Интересно, что отладка request.formats возвращает [*/*].

Я также попытался добавить простое промежуточное программное обеспечение Rack в начале моего стека, и CONTENT_TYPE прямо там, в моем envпеременная, с правильным значением.

При этой проблеме мое тело запроса никогда не анализируется, и я всегда попадаю в блок format.html моего respond_to вызова.

Я проверил ActionDispatch::ParamsParser и параметры там правильно строятся и помещаются в env["action_dispatch.request.request_parameters"].Однако они заканчиваются как пустые params[] в моих действиях (только для не HTML-запросов, то есть JSON, XML и т. Д.).

Есть идеи, что может быть не так?Спасибо!

Тем временем я сам нашел решение: в моем приложении была странная комбинация memcache-client для хранения сессий.Это сработало на моей коллеге по Ubuntu box.Я заменил memcache-client на dalli и изменил хранилище сеанса на конфигурацию, чтобы явно установить хост сервера memcache в качестве локального хоста.Это сработало.

1 Ответ

1 голос
/ 01 августа 2018

Проверьте этот драгоценный камень: actionpack-xml_parser. Я думаю, что этот драгоценный камень разрешит ваш запрос, потому что у меня была та же самая проблема, с которой он смог решить это.

...