2010-10-26 1 views
1

У меня есть многомерный массив, такие как:SOAP не проходя через многомерный массив

$array = array(
    'a' => 1, 
    'b' => 2, 
    'c' => array('42'=>'foo', '43'=>'bar'), 
    'd' => 4 
) 

Я пытаюсь кормить его в вызов SOAP следующим образом:

$response = $client->SomeFunction($array); 

Запрос XML производится игнорирует 'c'. Зачем?

ответ

0

Я выяснил причину, но сначала это было не очевидно.

Если массив не идеально соответствует ожидаемому серверу, он не будет помещен в XML.

Например, из приведенного выше примера, если сервер ожидает a, b и d но не c, c бы просто игнорировали и не будет отображаться в формате XML. Это то поведение, которое сбивало с толку.

0

У меня также есть эта проблема. Это даст мне и ошибку «Сервис недоступен». Я сделал то, что сделал, но все еще ошибся.

Это моя просьба:

POST /webservice/User.asmx HTTP/1.1 Ведущий: www.sample.com.au Content-Type: Текст/XML; кодировка = UTF-8 Content-Length: длина SOAPAction: "http://www.sample.com.au/UpdateUserBatch"

<UpdateUserBatch xmlns="http://www.sample.com.au/"> 
    <auth> 
    <Username>string</Username> 
    <Password>string</Password> 
    </auth> 
    <request> 
    <CreateIfNotExist>boolean</CreateIfNotExist> 
    <UpdateIfExists>boolean</UpdateIfExists> 
    <UserProfile> 
     <UserID>string</UserID> 
     <BusinessID>string</BusinessID> 
     <ExternalID>string</ExternalID> 
     <Username>string</Username> 
     <Password>string</Password> 
     <Addresses xsi:nil="true" /> 
     <Demographics xsi:nil="true" /> 
     <Roles xsi:nil="true" /> 
     </UserProfile> 
     <UserProfile> 
     <UserID>string</UserID> 
     <BusinessID>string</BusinessID> 
     <ExternalID>string</ExternalID> 
     <Username>string</Username> 
     <Password>string</Password> 
     <Addresses xsi:nil="true" /> 
     <Demographics xsi:nil="true" /> 
     <Roles xsi:nil="true" /> 
     </UserProfile> 
    </Users> 
    </request> 
</UpdateUserBatch> 

И это мой способ передачи его параметра:

$param = array('username' => 'username', 'password' => 'password', 'request'=>array('CreateIfNotExist' => TRUE, 'UpdateIfExists' => FALSE), 'Users' => array('UserProfile'=> array('UserID' => 'usr123', 
'BusinessID' => 'bus123', 
'ExternalID' => 'ext123', 
'Username' => 'test', 
'Password' => 'testing' 
)));