#xml #laravel #web-services #soap
#xml #ларавель #веб-сервисы #мыло
Вопрос:
У меня возникли проблемы с моим запросом на мыло none-wsdl. Я могу выполнять операции без параметров тела, но я не могу выполнять операции с параметрами в теле.
XML-запрос:
lt;soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"gt; lt;soap12:Headergt; lt;AuthHeader xmlns="http://tempuri.org/"gt; lt;UserNamegt;usernamelt;/UserNamegt; lt;Passwordgt;passwordlt;/Passwordgt; lt;/AuthHeadergt; lt;/soap12:Headergt; lt;soap12:Bodygt; lt;GetPaymentTypes xmlns="http://tempuri.org/" /gt; lt;/soap12:Bodygt; lt;/soap12:Envelopegt;
Мой запрос на выполнение мыла:
public function GetPaymentTypes($username,$password){ $client = new SoapClient(null, array('location' =gt; $this-gt;location, 'uri'=gt; $this-gt;uri,'trace' =gt; 1,'soap_version' =gt; SOAP_1_2)); $auth = array(); $auth['UserName'] = new SOAPVar($username, XSD_STRING, null, null, null, $this-gt;uri); $auth['Password'] = new SOAPVar($password, XSD_STRING, null, null, null, $this-gt;uri); $headerBody = new SOAPVar($auth, SOAP_ENC_OBJECT); $header = new SOAPHeader($this-gt;uri, 'AuthHeader', $headerBody); $client-gt;__setSOAPHeaders(array($header)); $data = $client-gt;__soapCall('GetPaymentTypes',array()); $filter = $data-gt;diffgram; return self::filter_array($filter,false); }
Вышеуказанная функция работает нормально, но я не смог создать функцию приведенного ниже XML — запроса.
XML-запрос
lt;?xml version="1.0" encoding="utf-8"?gt; lt;soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"gt; lt;soap12:Headergt; lt;AuthHeader xmlns="http://tempuri.org/"gt; lt;UserNamegt;usernamelt;/UserNamegt; lt;Passwordgt;passwordlt;/Passwordgt; lt;/AuthHeadergt; lt;/soap12:Headergt; lt;soap12:Bodygt; lt;GetRestaurantStatus xmlns="http://tempuri.org/"gt; lt;catalogNamegt;catalog_namelt;/catalogNamegt; lt;categoryNamegt;category_namelt;/categoryNamegt; lt;/GetRestaurantStatusgt; lt;/soap12:Bodygt; lt;/soap12:Envelopegt;
неработающая функция
public function GetRestaurantStatusCurl($username,$password,$catalogName,$categoryName){ $client = new SoapClient(null, array('location' =gt; $this-gt;location, 'uri'=gt; $this-gt;uri,'trace' =gt; 1,'soap_version' =gt; SOAP_1_2)); $auth = array(); $auth['UserName'] = new SOAPVar($username, XSD_STRING, null, null, null, $this-gt;uri); $auth['Password'] = new SOAPVar($password, XSD_STRING, null, null, null, $this-gt;uri); $headerBody = new SOAPVar($auth, SOAP_ENC_OBJECT); $header = new SOAPHeader($this-gt;uri, 'AuthHeader', $headerBody); $client-gt;__setSOAPHeaders(array($header)); $params[] = new SOAPVar($catalogName,XSD_STRING,null,null,"catalogName",null); $params[] = new SOAPVar($categoryName,XSD_STRING,null,null,"categoryName",null); $bodyParams = array( new SoapParam($catalogName, 'catalogName'), new SoapParam($categoryName, 'categoryName') ); $data = $client-gt;__soapCall('GetRestaurantStatus', $bodyParams); $filter = $data; return self::filter_array($filter,false); }
Я не знаю, как добавить параметры в тело. Я предполагаю, что проблема в этой причине. Я был бы очень рад, если бы вы могли помочь с этим.