2014-08-27 6 views
1

У меня есть массив уровней в моем SOAP-запросе, как показано ниже. Когда я запускаю свой SoapRequest, я получаю уведомление (8): Array для преобразования строк, а мой XML-ответ не преобразовывает Array в RTrans в XML, и я понятия не имею, почему. Как я создаю запрос SOAP и его версию XML можно найти ниже.php soapclient Array to string conversion

Запрос:

$r['request'] = array(
'request' => array(
    'user' => 'test', 
    'password' => 'test', 
    'RTrans' => array(
     'Transactions' => array(
      'Criteria' => array(
       'Name' => 'Thomas' 
      ) 
     ) 
    ) 
) 
); 

try{ 
    $response = $this->apiClient->DoQuery($r); 
} 
catch(Exception $e){ 
    debug($e); 
} 

XML-версия

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ns1="http://webServices/"> 
<SOAP-ENV:Body> 
    <ns1:DoNormalEnquiry> 
     <request> 
      <username>test</usernmae> 
      <password>test</password> 
      <RTrans>Array</RTrans> 
     </request> 
    </ns1:DoNormalEnquiry> 
</SOAP-ENV:Body> 

ответ

0

Я думаю, что RTrans определяется как String. Посмотрите файл wsdl. Возможно, это причина, по которой вы получили «Массив» в xml.

Чтобы отправить массив в ваш soapservice, вы можете преобразовать его в json. json_encode (массив ('Сделки' => Array ('Критерии' => массив ('Name' => 'Thomas')));.

или определить сложный тип данных

Может SoapVar поможет .?

+0

Из того, что я знаю, что ожидает строка XML, так я должен иметь его в этом формате RTrans = «<Операции> Томас»; – user1005319