Я работаю с WSDL, который имеет другое SOAP-действие в заголовке, которое я ожидал бы. В тот момент, когда я вызываю веб-службу, я просто получаю как сайт описания .NET веб-службы. В этом случае это
https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx
Какой URL-адрес я должен называть, чтобы перейти к методу getPurseBalance (), поскольку параметр в SOAP-действии из WSDL, похоже, не определен, есть ли способ определить это или я должен обратиться к поставщику веб-услуг?
Благодаря,
Вы не должны вызывать URL-адрес, вы должны отправить XML на эту прямую страницу. Чтобы узнать, что отправить в веб-службу, вы можете проверить свой URL:
https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx?op=getPurseBalance
Здесь вы также можете просмотреть свой SoapAction и другие заголовки для отправки:
POST /ytm/sQuidpages/sQuidPWS.asmx HTTP/1.1 Host: preprod.squidcard.com Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "https://secure.squidcard.com/getPurseBalance"
Если вы не хотите создавать XML вручную, вы также можете использовать класс SoapClient из PHP. Вы можете найти более подробную информацию здесь:
http://www.php.net/manual/en/class.soapclient.php
$client = new SoapClient("https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx?WSDL"); var_dump($client->__getFunctions()); $client->__soapCall("getPurseBalance", array('your parameters'));
см. это http://www.php.net/manual/en/soapclient.setlocation.php
Я думаю, вы должны использовать
$client->__setLocation('https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx');