Я совершенно новичок в использовании SOAP и ищу создание клиентского программного обеспечения, подключающегося к существующему сервису, который не предоставляет никаких ресурсов / демоверсий для PHP. Я хотел бы определить, что я делаю что-то не так с моим кодом, или, возможно, это системная проблема (я создал Apache2.4 / PHP7.2.7 в среде Windows Server 2008 R2).
Я уже потратил часы на то, чтобы протестировать вещи и просмотреть многочисленные другие темы, посвященные SOAP / PHP, здесь, и суть того, что я делаю в своем собственном потоке, заключается в том, что в SoapClient требуется аутентификация вызов, а скорее вызов $ client -> __ soapCall (function, params).
Во-первых, это то, что у меня есть в PHP.
$customerArray = array( $cust1 , $cust2, $cust3 );
$credentials = array(
'login' => $login,
'password' => $password,
);
try{
$client = new SoapClient($soaplink);//, $credentials);
} catch (Exception $e) {
echo "<h2>Exception Error in SoapClient</h2>";
echo $e->getMessage();
}
var_dump($client->__getFunctions());
try{
$response = $client->__soapCall("getCustomers", array($customerArray, $credentials));
}catch (Exception $e) {
echo "<h2>Exception Error in soapCall</h2>";
echo $e->getMessage();
}
var_dump($response());
Первый блок try завершается с массивом учетных данных или без него. Второй блок try при попытке вызвать функцию возвращает исключение «похоже, у нас нет XML-документа».
Сервис SOAP предоставил демонстрационные XML-файлы, один из которых для этой функции выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getCustomers
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://ws.praxedo.com/2008_07_01/customermodel/service"
>
<in0
soapenc:arrayType="soapenc:string[3]"
xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
<in0 xsi:type="soapenc:string">CUSTOMER001</in0>
<in0 xsi:type="soapenc:string">CUSTOMER002</in0>
<in0 xsi:type="soapenc:string">CUSTOMER003</in0>
</in0>
<in1
xsi:type="soapenc:string"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
login|password
</in1>
</ns1:getCustomers>
</soapenv:Body>
</soapenv:Envelope>
Также были предоставлены файлы WSDL, возможно, мне нужно загрузить их, но после демонстрации это не дало результатов. Я мог бы включить некоторые из WSDL сюда, но я считаю, что XML предоставляет все соответствующие детали?
Так может ли кто-нибудь узнать, что я не так делаю здесь, в своем PHP, или что я делаю, и мне нужно посмотреть на клиентскую сторону сервера Apache / SOAP?