Передать правильный массив через soap на php

224
17 апреля 2018, 02:59

Нужно получать данные через soap. Я вызываю метод из документации, передаю все параметры как описано. массив следующий:

$var["DriverRequest"] = array(              
    "DriverRequestValue"=>array(
        "DriverInfoRequest"=>array(
            "Surname" => "Петров",
            "Name" => "Петров",
            "Patronymic" =>"Петров",
            "BirthDate" => "1111-11-11",                
            "DriverDocDate" => "1111-11-11"
        ),
        "DateRequest" =>$date
    )                           
);

все отрабатывает нормально, но нужно передать два driverRequest. Получается следующий массив:

$var["DriverRequest"] = array(
        array(
            "DriverRequestValue"=>array(
                "DriverInfoRequest"=>array(
                    "Surname" => "Петров",
                    "Name" => "Петров",
                    "Patronymic" =>"Петров",
                    "BirthDate" => "1111-11-11",
                    "DriverDocDate" => "1111-11-11"
                ),
                "DateRequest" =>$date
            )
        ),              
        array(
            "DriverRequestValue"=>array(
                "DriverInfoRequest"=>array(
                    "Surname" => "Петров",
                    "Name" => "Петров",
                    "Patronymic" =>"Петров",
                    "BirthDate" => "1111-11-11",
                    "DriverDocDate" => "1111-11-11"
                ),
                "DateRequest" =>$date
            )
        )               
);

в ответ прилетает ошибка, что структура неправильная. В soapUI все отрабатывает нормально с такой xml

  <soapenv:Body>
 <as:DriverRequest>
        <DriverRequestValue>
            <DriverInfoRequest>
                <Surname>Мохнатов</Surname>
                <Name>Пётр</Name>
                <Patronymic>Иванович</Patronymic>
                <BirthDate>1980-01-01</BirthDate>                   
                <DriverDocDate>2000-01-01</DriverDocDate>
            </DriverInfoRequest>
            <DateRequest>2017-01-13T18:00:00</DateRequest>
        </DriverRequestValue>
    </as:DriverRequest>
     <as:DriverRequest>
        <DriverRequestValue>
            <DriverInfoRequest>
                <Surname>Иванов</Surname>
                <Name>Иван</Name>
                <Patronymic>Иванович</Patronymic>
                <BirthDate>1980-01-01</BirthDate>                   
                <DriverDocDate>2000-01-01</DriverDocDate>
            </DriverInfoRequest>
            <DateRequest>2017-01-13T18:00:00</DateRequest>
        </DriverRequestValue>
    </as:DriverRequest>

В чем может быть косяк?

вариант

$drivers = array(       
            array(
                "DriverRequest" => array(               
                    "DriverRequestValue"=>array(
                            "DriverInfoRequest"=>array(
                                "Surname" => "Петров",
                                "Name" => "Петров",
                                "Patronymic" =>"Петров",
                                "BirthDate" => "1111-11-11",
                                "DriverDocument" => array(
                                    "Serial" => "11111111",
                                    "Number" => "11111111",
                                ),
                                "DriverDocDate" => "1111-11-11"
                            ),
                            "DateRequest" =>$date
                        )   
                )//DriverRequest        
            ),
            array(
                "DriverRequest" => array(
                    "DriverRequestValue"=>array(
                        "DriverInfoRequest"=>array(
                            "Surname" => "Петров1",
                            "Name" => "Петров1",
                            "Patronymic" =>"Петров1",
                            "BirthDate" => "2222-22-222",
                            "DriverDocument" => array(
                                "Serial" => "22222",
                                "Number" => "22222",
                            ),
                            "DriverDocDate" => "1111-11-11"
                            ),
                        "DateRequest" =>$date
                    )           
                )//DriverRequest        
            )
    );

возвращает тот же ответ что неправильная структура, но в body уже такое содержание

<param1>
        <item>
            <key>DriverRequest</key>
            <value>
                <item>
                    <key>DriverRequestValue</key>
                    <value>
                        <item>
                            <key>DriverInfoRequest</key>
                            <value>
                                <item>
                                    <key>Surname</key>
                                    <value>Петров1</value>
                                </item>
                                <item>
                                    <key>Name</key>
                                    <value>Петров1</value>
                                </item>
                                <item>
                                    <key>Patronymic</key>
                                    <value>Петров1</value>
                                </item>
                                <item>
                                    <key>BirthDate</key>
                                    <value>2222-22-222</value>
                                </item>
                                <item>
                                    <key>DriverDocument</key>
                                    <value>
                                        <item>
                                            <key>Serial</key>
                                            <value>22222</value>
                                        </item>
                                        <item>
                                            <key>Number</key>
                                            <value>22222</value>
                                        </item>
                                    </value>
                                </item>
                                <item>
                                    <key>DriverDocDate</key>
                                    <value>1111-11-11</value>
                                </item>
                            </value>
                        </item>
                        <item>
                            <key>DateRequest</key>
                            <value>2018-04-15T17:36:16</value>
                        </item>
                    </value>
                </item>
            </value>
        </item>
    </param1>
READ ALSO
Почему не работает debug.log?

Почему не работает debug.log?

Задаю в wp-configphp отладочные параметры согласно инструкции в Codex:

209
Как передать много параметров в функцию, если они элементы массива?

Как передать много параметров в функцию, если они элементы массива?

Например, функция array_diff() принимает сколько угодно аргументов

138
yii2 как передать параметр моделе

yii2 как передать параметр моделе

Всем приветВозникла проблема

155