Застрял в преобразовании XML-запроса в соответствующий запрос Savon

Я пытаюсь связаться с сторонним API. Я попробовал и savon, и Soap UI, но оба не удалось, затем я спросил их, и они дали мне эквивалент, который работает. В замешательстве я переключил регистратор и получил следующий XML-запрос, который сильно отличается от того, что посылает Савон.
Вот код PHP (я думаю, что он не нужен, но все же)

$apiauth =array('UserName'=>'XXXXXX','Password'=>'XXXXXXX','ClientCode'=>'1234')
$wsdl = 'http://stagewebapi.mylescars.com/service.asmx?wsdl';

$soap = new SoapClient($wsdl);
$header = new SoapHeader('http://tempuri.org/', 'AuthHeader', $apiauth);
$soap->__setSoapHeaders($header);
$data = $soap->fetchCities($header);

print_r($data);

Вот XML-запрос, который отправляет PHP и который работает просто отлично

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Header><ns1:AuthHeader><ns1:UserName>XXXXXXX</ns1:UserName><ns1:Password>XXXXXXX</ns1:Password><ns1:ClientCode>1234</ns1:ClientCode></ns1:AuthHeader></SOAP-ENV:Header><SOAP-ENV:Body><ns1:fetchCities/></SOAP-ENV:Body></SOAP-ENV:Envelope>

Вот мой рубиновый код

require 'savon'

auth_header = { 'UserName'=>'XXXXXXX','Password'=>'XXXXXXXX','ClientCode'=>'1234'}
client = Savon.client(:wsdl  => "http://stagewebapi.mylescars.com/service.asmx?wsdl",
:namespace_identifier => :ns1 ,:namespace => "http://tempuri.org/" , :log => true, :soap_header => auth_header,
:pretty_print_xml => true, :env_namespace => 'SOAP-ENV')puts client.call(:fetch_cities)

Вот что производит Savon

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://tempuri.org/" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<UserName>XXXXXXXXXXXXXXX</UserName>
<Password>XXXXXXXXXXXXX</Password>
<ClientCode>2873</ClientCode>
</soap-env:Header>
<soap-env:Body>
<ns1:fetchCities/>
</soap-env:Body>
</soap-env:Envelope>

Я не знаю, как сделать его эквивалентным PHP. Я что-то упускаю из виду?

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

Подобные вопросы либо остаются без ответа, либо относятся к конкретным запросам.

Некоторые ТАК вопросы, которые немного помогли

Немного любопытно, как PHP делает это правильно большую часть времени. Это парсер, который они используют для WSDL?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]