Тело SOAP с пользовательскими атрибутами:
client.request :abc, :request, :token => 0, :id => 1, :version => 4 do
soap.body = {
:category => "",
:attributes! => { :category => { "domain_id" => 630643 } }
}
end
Savon::Client#request
принимает пространство имен, имя вызываемого действия SOAP, а также необязательный хэш атрибутов для входного тега SOAP.
<abc:request version="4" id="1" token="0">
Атрибуты для тегов тела SOAP могут быть установлены с помощью специального :attributes!
Хэша. Обратите внимание, что атрибут domain_id
является строкой, поскольку символы хэш-ключа (по умолчанию) преобразуются в lowerCamelCase.
<category domain_id="630643"></category>
Также обратите внимание, что Gyoku не создал самозакрывающийся тег. Савон использует Gyoku для перевода Ruby Hashes в XML, и библиотека может создавать самозакрывающиеся теги, но, похоже, глотает пользовательские атрибуты для них (v0.4.2). Это ошибка , которая должна быть исправлена в следующем выпуске.
Дополнительную информацию и примеры можно найти в новой документации.
Изменение кодировки по умолчанию
Савон использует HTTPI для выполнения HTTP-запросов, и вы можете получить доступ к HTTPI::Request
объекту через Savon::Client#http
. Изменение кодировки по умолчанию на UTF-16 должно быть возможно путем установки настраиваемого заголовка «Content-Type».
client.http.headers["Content-Type"] = "text/xml;charset=UTF-16"
Обратите внимание, что это не меняет атрибут кодирования инструкции обработки xml:
<?xml version="1.0" encoding="UTF-8"?>
Посмотрите на " Отправка запроса SOAP в кодировке UTF-16 с Ruby и Savon " для получения информации об изменении инструкции обработки.