Я в отчаянии. Я пытаюсь вызвать запрос мыла из php, как этот xml
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/"xmlns:hot = "http://hotelconcepts.com/"> <soapenv:Header>
<hot:Authentication>
<!--Optional:-->
<hot:User>?</hot:User>
<!--Optional:-->
<hot:Password>?</hot:Password>
<!--Optional:-->
<hot:CrsProperty>?</hot:CrsProperty>
<!--Optional:-->
<hot:VendorId>?</hot:VendorId>
<!--Optional:-->
<hot:Version>?</hot:Version>
</hot:Authentication>
</soapenv:Header>
<soapenv:Body>
<hot:CwiPackageAvailabilityDetails>
<!--Optional:-->
<hot:PropertyCode>?</hot:PropertyCode>
<!--Optional:-->
<hot:Packages>
<!--Zero or more repetitions:-->
<hot:string>?</hot:string>
</hot:Packages>
<hot:StartDate>?</hot:StartDate>
<hot:EndDate>?</hot:EndDate>
<!--Optional:-->
<hot:Adults>0</hot:Adults>
<!--Optional:-->
<hot:Children>0</hot:Children>
<!--Optional:-->
<hot:Infants>0</hot:Infants>
<!--Optional:-->
<hot:Nights>0</hot:Nights>
</hot:CwiPackageAvailabilityDetails>
Я пробую что-то подобное, но я не знаю, как имитировать этот xml-запрос клиентом php soap.
$client = new SoapClient($this->wsdl);
$headers = array(
"Authentication" => array(
"User" => $this->user,
"Password" => $this->pass,
"CrsProperty" => $this->crsProperty
)
);
$client->__setSoapHeaders($headers);
/* Set your parameters for the request */
$params = array(
"User" => $this->user,
"Password" => $this->pass,
"CrsProperty" => $this->crsProperty,
"PropertyCode" => $this->propertyCode,
"StartDate" => $startDate,
"EndDate" => $endDate,
"Adults" => $adults,
"Children" => $children,
);
try {
/* Invoke webservice method with your parameters, in this case: Function1 */
$response = $client->__soapCall("CwiPackageAvailabilityDetails", array($params, $headers));
} catch (\Exception $e) {
echo $e->getMessage();
}
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
/* Print webservice response */
var_dump($response);
}
Но я получаю только это сообщение: Сервер не смог обработать запрос. ---> Не аутентифицирован для собственности
Спасибо за любую помощь
Я пытался, но безуспешно ..
VendorID - это случайно GUID?
Поскольку используются пространства имен, синтаксис массива для заголовка работать не будет. Вы должны собрать заголовок мыла с помощью объекта SoapVar и правильно настроить его с помощью SoapClient::__setSoapHeaders.






Я настоятельно рекомендую вам использовать PackageGenerator, как если бы заголовок был хорошо объявлен в WSDL, тогда у вас будет соответствующий метод для его установки перед отправкой запроса. Каждый параметр представлен сгенерированным классом, например каждая операция в соответствующем классе ServiceType.
Избавьтесь от боли и страданий и используйте
wsdl2phpgenerator