До какого-то момента я пользовался программой SoapUI, программа интуитивно более-менее понятная, но как-то доказать факт того, что сторонний SOAP-сервер не возвращает данные, не представляется возможным и тут как всегда на помощь приходит Curl.
1. Формируем запрос, тут все почти просто:
curl -u login:password --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:sky:GetServiceLis" --data @request.txt http://host/erp/ws/skynet
sky это URN (Uniform Resource Name), в простонародью namespace (адресное пространство), оно определяется из полученной схемы. По сути это имя тега, которое будет использоваться в XML-запросе (см. пример ниже).
GetServiceLis - это метод, который будет вызван (один из методов, с которыми можно ознакомиться просто открыв адрес wsdl-ки http://host/erp/ws/skynet.
2. Создаем файл request.txt и помещаем в него xml запроса, который если сами не можете составить, то можно подсмотреть в программе SoapUI или с помощью PHP:
$this->soap = new \SoapClient('http://host/erp/ws/skynet', [
'login' => 'login',
'password' => 'password',
'encoding' => 'UTF-8',
'trace' => true,// обязательный параметр, без которого не будут работать дебаг-методы:
];$this->connection->soap->__getLastRequest());
$this->connection->soap->__getLastResponse());
Как Вы уже поняли, эти дебаг-методы возвращают xml в виде строки, которую и нужно поместить в файл request.txt
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:sky="mytest-erp/skynet" xmlns:glob="mytest-erp/Global"><soap:Header/><soap:Body><sky:GetServiceLis><sky:parameters><glob:OnlyChanged>false</glob:OnlyChanged><!--Optional:--><glob:MaximumObjectsInResult>100</glob:MaximumObjectsInResult></sky:parameters></sky:GetServiceLis></soap:Body></soap:Envelope>
Удачки.