Как создать SOAP-запрос из XML с помощью PHP - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь создать SOAP-запрос, но он выдает ошибку: при попытке аутентификации произошла исключительная ситуация. Ссылка на строку не установлена ​​для экземпляра строки. Имя параметра: s Мой код:

<code>$wsdl   = "https://securedwebapp.com/api/service.asmx?WSDL"; 
$trace = true;
$exceptions = false;
$debug = true;

$client = new SoapClient($wsdl,
      array(
        'trace' => $trace,
        'exceptions' => $exceptions,
        'debug' => $debug,
      ));


    $xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:kas="KashFlow">
   <soapenv:Header/>
   <soapenv:Body>
      <kas:GetInvoice>
         <kas:UserName>xxx</kas:UserName>
         <kas:Password>xxx</kas:Password>
         <kas:InvoiceNumber>184576</kas:InvoiceNumber>
      </kas:GetInvoice>
   </soapenv:Body>
</soapenv:Envelope>';
//var_dump($xml);

    $args = array(new SoapVar($xml, XSD_ANYXML)); 
    $res  = $client->__soapCall('GetInvoice', $args);
var_dump($res);
echo "<hr>Last Request";
echo "<pre>", htmlspecialchars($client->__getLastRequest()), "
";

Кто-нибудь знает, как решить? Запрос работает нормально, если я использую:

$wsdl = 'https://securedwebapp.com/api/service.asmx?WSDL';
$trace = true;
$exceptions = false;
$debug = true;

$client = new SoapClient($wsdl,
      array(
        'trace' => $trace,
        'exceptions' => $exceptions,
        'debug' => $debug,
      ));


$params = array(
   'InvoiceNumber' =>'81217',
    'UserName' => 'xxx', 
    'Password' => 'xxx'
);

$resp = $client->GetInvoice($params);


print_r($resp);

Это запрос с простыми параметрами, но в реальной ситуации у меня сложный запрос XML, который я не знаю, как сформировать как объект php. Вот почему я бы отправил его в формате XML, как я пытаюсь сделать в первую очередь.

1 Ответ

0 голосов
/ 27 августа 2018

В настоящее время настоятельно рекомендуется использовать генератор WSDL to PHP, чтобы избежать подобных проблем.

Я рекомендую использовать проект PackageGenerator , который позволяет генерировать PHP SDK на основе WSDL. Сгенерированный PHP SDK содержит все, что необходимо для построения запроса, отправки запроса и обработки ответа только с использованием подхода ООП.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...