Я думаю, вам нужно внести два изменения;
(a) Используйте маршрутизацию рельсов, чтобы пометить это как запрос XML
(b) Используйте базовую аутентификацию HTTP для аутентификации запроса.
Это означает, что вы измените свой URL выше, чтобы включить имя пользователя и пароль, как это
мне: секрет @ локальный: 3000 / Foos / 1.xml
также обратите внимание. Xml bit
Я предполагаю, что где-то на вашей стороне сервера у вас есть код, который аутентифицирует входящие запросы через фильтр before. Это должно работать примерно так ...
#
# If you haven't authenticated already then you are either
# reqirected to the logon screen (for HTML formats) or
# the browser prompts you. You are always allowed to pass
# the username/password in the URL
#
def login_required
@current_user = valid_session?
unless @current_user
if params["format"]
#
# If you specify a format you must authenticate now
#
do_basic_authentication
else
display_logon_screen
end
end
end
#
# Ask Rails for the login and password then authenticate as if this
# were a new login.
#
def do_basic_authentication
user = authenticate_with_http_basic do |login, password|
User.authenticate(login, password)
end
if user
current_user(@current_user = user)
else
request_http_basic_authentication
end
end
Это из нашего собственного приложения и запускается before_filter в ApplicationController.
Кроме того, я не думаю, что вам нужно: content_type => 'application / xml'. Что я обычно делаю, так это просто звоню или ставлю прямо так ...
response = RestClient.post URI.encode (url),: record => args
где URL содержит базовую аутентификацию и ".xml"
Счастливое кодирование
Chris