Первый раз с использованием клиента PHP SOAP - PullRequest
0 голосов
/ 06 ноября 2019

Я начал писать код для использования SOAP в PHP.

Мне удалось получить мой код для входа в систему и аутентификации, что является началом!

У меня изначально был следующий код:

$params = array(
  "Parcels" => 1,
  "RecipientAddress" => "123 Any Street, Any Town, Anywhere",
  "RecipientName" => "Joe Bloggs",
  "CollectionDate" => "2019-11-11",
);

// Invoke WS method (Function1) with the request params 
$response = $client->__soapCall("GetAvailableServices", array($params));

// Print WS response
var_dump($response);

, который вернул следующее сообщение:

Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Client] Missing Recipient Address Element 'RecipientName' in /home/thisone/public_html/despatchbayservices.php:17 Stack trace: #0 /home/thisone/public_html/despatchbayservices.php(17): SoapClient->__soapCall('GetAvailableSer...', Array) #1 {main} thrown in /home/thisone/public_html/despatchbayservices.php on line 17

Я попытался изменить код на:

$params = array(
  "Parcels" => 1,
  "RecipientAddress" => array(
  "RecipientName" => "Joe Bloggs",
),
  "CollectionDate" => "2019-11-11",
);

// Invoke WS method (Function1) with the request params 
$response = $client->__soapCall("GetAvailableServices", array($params));

// Print WS response
var_dump($response);

Который вернул это:

Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'RecipientAddress' property in /home/thisone/public_html/despatchbayservices.php:18 Stack trace: #0 /home/thisone/public_html/despatchbayservices.php(18): SoapClient->__soapCall('GetAvailableSer...', Array) #1 {main} thrown in /home/thisone/public_html/despatchbayservices.php on line 18

Я уверен, что делаю что-то действительно глупое, но я просто не вижу этого - любая помощь очень ценится!

1 Ответ

0 голосов
/ 06 ноября 2019

Sussed it - спасибо Don't Panic за то, что указал мне на WDSL.

Для справки правильный / рабочий код:

$params = array(

"Parcels" => array(
  "ParcelType" => array(
    "Weight" => 5,
    "Length" => 5,
    "Width" => 5,
    "Height"=> 5,
  )
 ),
"RecipientAddress" => array(
  "RecipientName" => "Joe Bloggs",
  "RecipientAddress" => array(
      "CompanyName" => "My Company",
      "Street" => "123 Any Street",
      "Locality" => "Anywhere",
      "TownCity" => "Any Town",
      "County" => "Somewhere",
      "PostalCode" => "TS23 4EA",
      "CountryCode" => "GB",
)
),
  "CollectionDate" => "2019-11-11",
);

// Invoke WS method (Function1) with the request params 
$response = $client->__soapCall("GetAvailableServices", array($params));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...