Я имею дело с веб-сервисом, который хочет, чтобы я использовал сертификат и образец XML для связи с ними. Я решил использовать SOAPclient, хотя на самом деле не очень разбираюсь в этом. Мой сценарий выглядит так:
$url='https://the.website.com:443/for_their_service';
$cert = "CERTIFICATE.pem";
$xmlDocument = '<soapenv:Envelope xmlns:com="http://their.website.subdomain.web.service" xmlns:data="http://data.prescreen.website.subdomain.web.service" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header></soapenv:Header>
<soapenv:Body wsu:Id="id-1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<com:getNameID>
<com:objaInfo>
<data:firstName>Larry</data:firstName>
</com:objaInfo>
</com:getPreScreenOffers>
</soapenv:Body>
</soapenv:Envelope>';
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient($url,
array(
'local_cert'=>$cert,
'trace' => 1,
'encoding' => 'ISO-8859-1',
'cache_wsdl' => WSDL_CACHE_MEMORY
)
);
$xmlvar = new SoapVar(
"<ns1:xmlDocument>'.$xmlDocument.'</ns1:xmlDocument>", XSD_ANYXML
);
enter code here
$params->xmlDocument = (object)$xmlvar;
$save_result = $client->SaveProduct($params);
print_r($save_result);
Когда я делаю это, я получаю:
Предупреждение:
SoapClient :: SoapClient (https://the.website.com:443/for_their_service)
[soapclient.soapclient]: не удалось открыть поток: сбой HTTP-запроса!
HTTP / 1.1 404 Не найдено в /path/to/script.php в строке 56.Предупреждение: SoapClient :: SoapClient () [soapclient.soapclient]: предупреждение ввода-вывода
: не удалось загрузить внешнюю сущность
«https://the.website.com:443/for_their_service«в /path/to/script.php
по линии 56Неустранимая ошибка: необработанное исключение SoapFault: [WSDL] SOAP-ERROR: синтаксический анализ
WSDL: не удалось загрузить с
‘https://the.website.com:443/for_their_service‘ : ошибка загрузки
внешняя сущность «https://the.website.com:443/for_their_service» в
/path/to/script.php:56 Трассировка стека: # 0 /path/to/script.php(56):
SoapClient-> SoapClient (»https: //the.websi…’, Array) # 1 {main}
в /path/to/script.php в строке 56
Я почти уверен, что не должен был получить 404 здесь. Каковы первые вещи, которые я должен проверить, чтобы устранить неполадки?
Задача ещё не решена.
Других решений пока нет …