Я пытаюсь создать XML-запрос в Savon, но идентификатор пространства имен не работает с вложенными атрибутами.
Я пробовал namespace_identifier:: ns в клиенте Savon, он отображается для первого уровня, но не для вложенного.
customer = {
"customer" =>
{
"Email" => 'some_email@gmail.com',
"FirstName" => 'First Name',
"LastName" => 'Last Name',
"LocationGroupId" => 1,
"OriginationLocationId" => 1
}
}
client = Savon.client(wsdl: "wsdl url",
namespace: "namespace url" ,
env_namespace: :soapenv,
namespace_identifier: :ns,
element_form_default: :qualified,
wsse_auth: [USER_NAME,PASSWORD],
log: true,
log_level: :debug,
pretty_print_xml: true)
request = client.call(:submit_customer, message: customer)
Фактический результат
<soapenv:Body>
<ns:SubmitCustomer>
<ns:customer>
<ns:Email>some_email@gmail.com</ops:Email>
<ns:FirstName>First Name</ns:FirstName>
<ns:LastName>Last Name</ns:LastName>
<ns:LocationGroupId>1</ns:LocationGroupId>
<ns:OriginationLocationId>1</ns:OriginationLocationId>
</ns:customer>
</ns:SubmitCustomer>
</soapenv:Body>
Ожидаемый
<soapenv:Body>
<ns:SubmitCustomer>
<ns:customer>
<ops:Email>some_email@gmail.com</ops:Email>
<ops:FirstName>First Name</ns:FirstName>
<ops:LastName>Last Name</ns:LastName>
<ops:LocationGroupId>1</ns:LocationGroupId>
<ops:OriginationLocationId>1</ns:OriginationLocationId>
</ns:customer>
</ns:SubmitCustomer>
</soapenv:Body>