Я пытаюсь вызвать метод 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](https://i.stack.imgur.com/o6Lzs.png)
Было бы здорово, если быкто-то может помочь мне с правильным решением для вышеперечисленного.