Вызов SOAP с использованием php с xml в качестве параметров - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь вызвать метод SOAP с использованием PHP.А веб-сервис написан с использованием dotnet.Я сделал все возможные способы сделать этот вызов, но не смог найти правильное решение.

Вот код, который я получил:

<code>$xml_post_string = '<?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
          <soap:Body>
            <addSupplierxml xmlns="http://tempuri.org/">
              <supdatexml>xml</supdatexml>
            </addSupplierxml>
          </soap:Body>
        </soap:Envelope>';

    $soapUrl = "http://localhost:8100/WebService.asmx";
    $wsdl = 'http://localhost:8100/WebService.asmx?wsdl';

    $options = array(
            'uri'=>$soapUrl,
            'style'=>SOAP_RPC,
            'use'=>SOAP_ENCODED,
            'soap_version'=>SOAP_1_2,
            'cache_wsdl'=>WSDL_CACHE_NONE,
            'connection_timeout'=>15,
            'trace'=>true,
            'encoding'=>'UTF-8',
            'exceptions'=>true,
        );
    try {
        // $soap1 = new SoapClient($wsdl);

        $soap = new SoapClient($wsdl, $options);
        // $xml_post_string = new SoapVar($xml_post_string,XSD_ANYXML); 
        $params = array('supdatexml' => $xml_post_string);

        $result = $soap->addSupplierxml($params);
    }
    catch(Exception $e) {
        die('Error:'.$e->getMessage());
    }
    echo '<pre>';
    var_dump($result);
    echo '
';

используя приведенный выше код, я могу отправить параметры в веб-сервис, если веб-сервис объявляет параметры запроса как строковые, если он объявлен как xmlDocument, тогда он выдает ошибку ниже.

Запись в xmlSystem.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.в WebService.addSupplierxml (XmlDocument supdatexml) в C: \ inetpub \ wwwroot \ App_Code \ WebService.cs: строка 55

, если я добавлю следующую строку

$xml_post_string = new SoapVar($xml_post_string,XSD_ANYXML); 

, затемверните мне ПЛОХОЙ ЗАПРОС Ошибка

, для дальнейшего использования ниже приведен код, написанный в сервисе dotnet. enter image description here

Было бы здорово, если быкто-то может помочь мне с правильным решением для вышеперечисленного.

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