Savon 2.1 используется: атрибуты! для добавления атрибутов во вложенные теги xml. Как это делается в 2.3? Точный же хэш не отображает один и тот же xml.Как добавить в Savon 2.3 вложенные атрибуты?
{
:person => {
:address => "",
:attributes! => { :address => { :id => 44 } }
},
:attributes! => { :person => { :id => 666 } }
}
создает
<person>
<address id="44"/>
</person>
<attributes>
<person>
<id>666</id>
</person>
</attributes>
вместо
<person id=\"666\"><address id=\"44\"></address></person>
Для справки: How do I use savon nested attributes! hash?
Другой пример, где даже внутренние атрибуты! терпит неудачу
{
'Objects' => [{
'EmailAddress' => '[email protected]',
:attributes! => {
'EmailAddress' => { 'xsi:type' => "tns:email" }
}
}],
:attributes! => {
'Objects' => { 'xsi:type' => "tns:Subscriber" },
}
}
Производит:
<Objects>
<EmailAddress>[email protected]</EmailAddress>
<attributes>
<EmailAddress>
<xsi:type>tns:email</xsi:type>
</EmailAddress>
</attributes>
</Objects>
<attributes>
<Objects>
<xsi:type>tns:Subscriber</xsi:type>
</Objects>
</attributes>
Позже пример и окончательное обоснование для выдачи пытаются создать подписчик для ExactTarget.
https://webservice.exacttarget.com/etframework.wsdl
61 def soap
62 @soap_client ||= Savon.client(
63 soap_header: header,
64 wsdl: 'https://webservice.exacttarget.com/etframework.wsdl',
65 endpoint: endpoint,
66 wsse_auth: ["*", "*"],
67 raise_errors: false,
68 log: true,
69 open_timeout: 180,
70 read_timeout: 180,
71 pretty_print_xml: true
72 )
73 end
112 def create_subscriber
113 soap.call :create, :message => {
114 'Objects' => [{
115 'EmailAddress' => '[email protected]'
116 }],
117 :attributes! => {
118 'Objects' => { 'xsi:type' => "tns:Subscriber" },
119 }
120 }
121 end
Заголовок опущено, поскольку она содержит учетные данные.
Я ожидаю, что это должно работать в Савоном 2.3. Попытка отследить WSDL, который имеет некоторые параметры, я могу перейти к операции по отладке, это немного сложно. – tjarratt
ExactTarget wsdl - это то место, где у меня возникают ошибки. Я пытаюсь создать подписчика. – Justin
У меня такая же проблема. – banditKing