Использовать веб-службу .Net с помощью PHP

Это мой первый раз с веб-сервисами / SOAP … Я пытаюсь использовать .NET-сервисы с использованием PHP, но безрезультатно. Я искал и читал все страницы, которые Google поднимает для чего-либо, связанного с этим, но я все еще потерян.

Дело в том, что SOAP-сервис, который я пытаюсь вызвать, имеет заголовок авторизации, и я не могу определить способ аутентификации моего запроса.

Я пробовал php-soapclient и NuSoap, но не существует образца кода, который бы помог. Поэтому любая помощь была бы замечательной.

Ниже приведен пример запроса и ответа SOAP 1.1.

POST /OxiWalletService/Service.asmx HTTP/1.1 Host: 172.160.0.49 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/WS_GetData" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <AuthHeader xmlns="http://tempuri.org/"> <UserName>string</UserName> <Password>string</Password> </AuthHeader> </soap:Header> <soap:Body> <WS_GetData xmlns="http://tempuri.org/"> <xmlString>string</xmlString> </WS_GetData> </soap:Body> </soap:Envelope> 

отклик

 HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <WS_GetDataResponse xmlns="http://tempuri.org/"> <WS_GetDataResult>string</WS_GetDataResult> </WS_GetDataResponse> </soap:Body> </soap:Envelope> 

Кто-нибудь может прочесть пример кода о том, как использовать такую ​​услугу.

Спасибо заранее!

Это код, который я использовал для вызова веб-службы

 <?php $soap_client = new SoapClient("http://172.160.0.49/OxiWalletService/Service.asmx?WSDL"); $Uid='oxigen'; $Pwd='oxigen'; $ns = "http://tempuri.org/"; //Body of the Soap Header. $headerbody = array('UserName' => $Uid, 'Password' => $Pwd ); //Create Soap Header. $header = new SOAPHeader($ns, 'AuthHeader', $headerbody); //set the Headers of Soap Client. $soap_client->__setSoapHeaders($header); $par="<Wallet><SPName>AuthenticateMerchantWebVending</SPName><Parameters>&lt;Parameter&gt;&lt;Name&gt;@Account&lt;/Name&gt;&lt;Size&gt;50&lt;/Size&gt;&lt;Value&gt;1135600016&lt;/Value&gt;&lt;Type&gt;varchar&lt;/Type&gt;&lt;/Parameter&gt;&lt;Parameter&gt;&lt;Name&gt;@Password&lt;/Name&gt;&lt;Size&gt;20&lt;/Size&gt;&lt;Value&gt;0OgknrdonyM=&lt;/Value&gt;&lt;Type&gt;varchar&lt;/Type&gt;&lt;/Parameter&gt;</Parameters><ParameterCount>2</ParameterCount><DataBase>1</DataBase></Wallet>"; $param=array('xmlString'=>$par); $result=$soap_client->__SoapCall('WS_GetData',$param); print_r ($result); ?> 

и я получаю следующее в качестве вывода:

stdClass Object ([WS_GetDataResult] => 2Unknown Error)

Идеи ??

Итак, получается, что вы должны передать второй аргумент с параметрами в качестве ключа массива

это означает

 $result=$soap_client->__SoapCall('WS_GetData',$param); 

должно быть

 $result=$soap_client->__SoapCall('WS_GetData',array('parameters'=>$param)); 

Это работает сейчас.