Я пытаюсь сгенерировать XML-запрос SOAP, который выглядит примерно так:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dto="dto" xmlns:com="">
<soapenv:Header>
<dto:AuthenticationDTO>
<dto:LOGIN_ID>login</dto:LOGIN_ID>
<dto:LOGIN_PASSWORD>login</dto:LOGIN_PASSWORD>
</dto:AuthenticationDTO>
</soapenv:Header>
<soapenv:Body>
<com:createAccount>
<com:AccountFields>
<!--Zero or more repetitions:-->
<dto:FieldDTO>
<!--Optional:-->
<dto:children/>
<!--Optional:-->
<dto:fieldType>GENERAL</dto:fieldType>
<!--Optional:-->
<dto:index>0</dto:index>
<!--Optional:-->
<dto:label>BusinessName</dto:label>
<!--Optional:-->
<dto:name>BizInfo-BusinessName</dto:name>
<!--Optional:-->
<dto:value>the business name</dto:value>
</dto:FieldDTO>
<!--Zero or more repetitions:-->
<dto:FieldDTO>
<!--Optional:-->
<dto:children/>
<!--Optional:-->
<dto:fieldType>GENERAL</dto:fieldType>
<!--Optional:-->
<dto:index>0</dto:index>
<!--Optional:-->
<dto:label>BusinessCountry</dto:label>
<!--Optional:-->
<dto:name>BizInfo-Country</dto:name>
<!--Optional:-->
<dto:value>US</dto:value>
</dto:FieldDTO>
</com:AccountFields>
<com:ApplicationNumber></com:ApplicationNumber>
<com:CreditTerms></com:CreditTerms>
<com:GenerateAccountIdIndicator>true</com:GenerateAccountIdIndicator>
</com:createAccount>
Я получаю ответ, используя этот код:
<code> $matchCompany->FieldList->FieldDTO->fieldType = 'GENERAL';
$matchCompany->FieldList->FieldDTO->label = 'Business Name';
$matchCompany->FieldList->FieldDTO->name = 'BizInfo-BusinessName';
$matchCompany->FieldList->FieldDTO->index = '0';
try
{
$result = $soapClient->getAccountInfo($matchCompany);
print "<pre>";
print_r($result);
print "
";
эхо "ЗАПРОС: \ n". htmlentities ($ soapClient -> __ getLastRequest ()). "\ П";
}
поймать (ошибка SoapFault $)
{
echo $ fault-> код ошибки. "-". $ Вино-> faultstring;
эхо "ЗАПРОС: \ n". htmlentities ($ soapClient -> __ getLastRequest ()). "\ П";
}
но если я попытаюсь упорядочить элемент fielddto следующим образом:
//$matchCompany->FieldList->FieldDTO[]['fieldType'] = 'GENERAL';
//$matchCompany->FieldList->FieldDTO[]['label'] = 'Business Name';
//$matchCompany->FieldList->FieldDTO[]['name'] = 'BizInfo-BusinessName';
//$matchCompany->FieldList->FieldDTO[]['index'] = '0';
Оборачивает каждый элемент в свой собственный тег FieldDTO вместо помещения всех четырех элементов в один тег FieldDTO.
Чего мне не хватает? Кажется, что это должно работать, но это не совсем правильно.