Хорошо, я вырываю свои волосы на этом. Я вообще не работал с XML-вызовом PHP WDSL SOAP CURL (все по отдельности, но не вместе!) И пытался получить ответ или значимую ошибку.
Чтобы подчеркнуть это, у меня есть демонстрационная конечная точка WDSL (http://office.keystonesupport.net:8084/DemoSoap/KSDSoap/KhaosKSD.exe/wsdl/IKosWeb?wsdl)), которая, если вы останетесь в браузере, ответит XML, детализирующим все.
Затем я попытался написать PHP для доступа к одной конкретной операции 'GetVersion', которая не принимает входные параметры
Проводка с использованием Wizdler (https://chrome.google.com/webstore/detail/wizdler/oebpmncolmhiapingjaagmapififiakb), показывает, что с заголовками запроса
SOAPAction: "urn:IKosWebIntf-IKosWeb#GetVersion"
Content-Type: text/xml; charset="utf-8"
и тело
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<GetVersion xmlns="http://tempuri.org/"/>
</Body>
</Envelope>
Я получаю ответ
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS1="urn:IKosWebIntf-IKosWeb">
<NS1:GetVersionResponse>
<return xsi:type="xsd:string">8.149.29</return>
</NS1:GetVersionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Итак, я включил это в свой сценарий ниже.
Но это просто дает ошибку тайм-аута curl?
$xml='<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<GetVersion xmlns="http://tempuri.org/"/>
</Body>
</Envelope>';
$url='http://office.keystonesupport.net:8084/DemoSoap/KSDSoap/KhaosKSD.exe/wsdl/IKosWeb?wsdl';
$ch = curl_init();
$headers = array(
"Content-type: text/xml;charset=\"utf-8\"",
"SOAPAction: \"urn:IKosWebIntf-IKosWeb#GetVersion"",
);
$ch = curl_init();
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
print_r ($headers);
echo '<br>';
echo htmlentities($xml);
echo '<br>';
$response = curl_exec($ch);
if($response === false) {
$err = 'Curl error: ' . curl_error($ch);
curl_close($ch);
print $err;
}else{
curl_close($ch);
var_dump($response);
}