Задать вопрос
tmman
@tmman
Обои из семерки наконец-то пригодились!

Почему в запросе запросе soap нет первого параметра?

ini_set('soap.wsdl_cache_enabled', 0);

// Создание клиента
$client = new SoapClient (
        'http://url/soap.xml',
	 array(
        'trace'=> 1,
        'exceptions' => 0,
        'encoding' => 'UTF-8',
        'login' => 'lxlxlxlx',
        'password' => 'xxx',
        'cache_wsdl' => WSDL_CACHE_NONE,
	'soap_version' => SOAP_1_2,
	     )
);

// Загружаем данные
$client->__soapCall("Load", 
array(
	"ProjectCode" 	        => null, //$GLOBALS["ProjectCode_SOAP"], 		
        "SiteCode" 		=> "000008",
        "ProposalType" 	=> null,
        "ClientName" 	        => "Name",
	"Email"      	        => "email@email.com",
...
...


Но echo $client->__getLastRequest(); возвращает вот что (показано только начало):

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://url/crm">
<env:Body>
<ns1:Load/>
<param1>000008</param1>
<param2/>
<param3>Name</param3>
<param4>email@email.com</param4>


Во-первых, нормально ли, что , а не ?

Во-вторых, неважно, ProjectCode равен null, или иному, в lastrequest он никогда не появится. Почему? Что я делаю не так? Подозреваю, что именно поэтому получаю ошибку "soap:Sender Неизвестная ошибка. Недостаточно параметров операции по причине: Недостаточно параметров операции".

В WSDL ProjectCode есть:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://v8.1c.ru/8.1/data/core" xmlns:xs2="http://url/crm" targetNamespace="http://url/crm" elementFormDefault="qualified">
<xs:import namespace="http://v8.1c.ru/8.1/data/core"/>
<xs:element name="Load">
<xs:complexType>
<xs:sequence>
<xs:element name="ProjectCode" type="xs:string" nillable="true"/>
<xs:element name="SiteCode" type="xs:string"/>
<xs:element name="ProposalType" type="xs:string"/>
<xs:element name="ClientName" type="xs:string"/>
<xs:element name="Email" type="xs:string" nillable="true"/>
<xs:element name="Mobile" type="xs:string"/>
<xs:element name="Message" type="xs:string" nillable="true"/>
<xs:element name="AppCode" type="xs:string" nillable="true"/>
<xs:element name="SitePrice" type="xs:double" nillable="true"/>
<xs:element name="Urls" type="xs:string" nillable="true"/>
<xs:element name="Subscribe" type="xs:boolean" nillable="true"/>
<xs:element name="RSource" type="xs:string" nillable="true"/>
<xs:element name="ManagerID" type="xs:string" nillable="true"/>
<xs:element name="SessionID" type="xs:string" nillable="true"/>
<xs:element name="Agent" type="xs:string" nillable="true"/>
<xs:element name="Agent_email" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
  • Вопрос задан
  • 1129 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
madmages
@madmages
Человек прямоходящий
работа идет по WSDL ('url/soap.xml') этот модуль прежде чем делать запрос идет в wsdl смотрит есть ли там такое и если нету то отсекает. Отсюда могу сделать предположение что в wsdl нету твоего ProjectCode и именно по этому ты получаешь ошибку недостаточности параметров.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fragster
@Fragster
помогло? отметь решением!
'features' => SOAP_USE_XSI_ARRAY_TYPE в качестве опций конструктора надо передать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы