За последние 24 часа нас посетили 21922 программиста и 1019 роботов. Сейчас ищут 877 программистов ...

Как правильно составить запрос в Soap

Тема в разделе "PHP для новичков", создана пользователем r67wru, 3 июл 2024.

  1. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    36
    Симпатии:
    2
    Код (Text):
    1. $auth = ['login' => $login, 'password' => $password, 'orderId' => $orderID, 'lines' =>  '    '];
    2.  
    3. try{
    4. $client = new SoapClient($wsdl_url,$param_server);
    5. $vv = $client->AddItem($auth);
    6. var_dump($vv);
    7.  
    8. } catch(SoapFault $E){
    9.     echo 'Ошибка: '.$E->faultstring.'<br>'.$E->faultcode;
    10. }
    Коллеги не понять как правильно составить запрос имею переменную $auth в параметре lines надо вставить класс OrderLineCreationDto который имеет 2 параметра.

    описания класса Снимок экрана 2024-07-03 163730.png
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.594
    Симпатии:
    362
    Массив пробовал?
    PHP:
    1. 'lines' => [
    2.     'ItemId' => $itemId,
    3.     'Quantity' => $quantity,
    4. ]
     
  3. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    36
    Симпатии:
    2
    Пробовал, не работает
     
  4. Aleksandr.B

    Aleksandr.B Новичок

    С нами с:
    2 фев 2023
    Сообщения:
    157
    Симпатии:
    41
    Адрес:
    Барнаул
    Можно попробовать
    Код (Text):
    1. new \SoapParam($params, 'OrderLineCreationDto')
     
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    319
    Симпатии:
    64
    Адрес:
    Бавария, Германия
    Добрый день!
    В описание метода AddItem указано, что параметр lines это массив объектов, тип данных - структура OrderLineCreationDto.
    Для нескольких продуктов lines можно определить так
    PHP:
    1. <?
    2. echo "Результат:
    3. структура данных типа OrderLineStatusDto - <br>
    4. массив объектов с описанием товаров для заказа:<br>";
    5. echo "<pre>";
    6.  
    7. $lines = [
    8.     (object)
    9.     [
    10.     'ItemId' => 111,
    11.     'Quantity' => 1
    12.     ],
    13.     (object)
    14.     [
    15.     'ItemId' => 222,
    16.     'Quantity' => 2
    17.     ],
    18. ];
    19. print_r($lines);
    20. /*
    21. Результат: структура данных типа OrderLineStatusDto -
    22. массив объектов с описанием товаров для заказа:
    23. Array
    24. (
    25.     [0] => stdClass Object
    26.         (
    27.             [ItemId] => 111
    28.             [Quantity] => 1
    29.         )
    30.  
    31.     [1] => stdClass Object
    32.         (
    33.             [ItemId] => 222
    34.             [Quantity] => 2
    35.         )
    36.  
    37. )
    38. */
    Удачи!
     
  6. r67wru

    r67wru Активный пользователь

    С нами с:
    14 июл 2017
    Сообщения:
    36
    Симпатии:
    2
    Большое спасибо за помощь!!!!
     
  7. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    319
    Симпатии:
    64
    Адрес:
    Бавария, Германия
    Можете ещё попробовать сделать так
    PHP:
    1. <?
    2. echo "Результат:
    3. структура данных типа OrderLineStatusDto - <br>
    4. массив объектов с описанием товаров для заказа:<br>";
    5. echo "<pre>";
    6. $lines = [
    7.     [
    8.         "OrderLineStatusDto" => (object)
    9.         [
    10.             'ItemId' => 111,
    11.             'Quantity' => 1
    12.         ]
    13.     ],
    14.  
    15.     [
    16.         "OrderLineStatusDto" => (object)
    17.         [
    18.             'ItemId' => 222,
    19.             'Quantity' => 2
    20.         ]
    21.     ],
    22. ];
    23. print_r($lines);
    24. /*
    25. Результат: структура данных типа OrderLineStatusDto -
    26. массив объектов с описанием товаров для заказа:
    27. Array
    28. (
    29.     [0] => Array
    30.         (
    31.             [OrderLineStatusDto] => stdClass Object
    32.                 (
    33.                     [ItemId] => 111
    34.                     [Quantity] => 1
    35.                 )
    36.  
    37.         )
    38.  
    39.     [1] => Array
    40.         (
    41.             [OrderLineStatusDto] => stdClass Object
    42.                 (
    43.                     [ItemId] => 222
    44.                     [Quantity] => 2
    45.                 )
    46.  
    47.         )
    48. )
    49. */