Вызов веб-службы SOAP со сложным типом данных с использованием PHP - PullRequest
2 голосов
/ 12 октября 2010

Я пытаюсь написать PHP для вызова веб-службы. Используя SoapUI, я создаю следующий вызов сервиса, который работает:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://gmo.ws.client.np.z2.com/xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <xsd:login>
         <xsd:auth>
            <xsd:password>myPwd</xsd:password>
            <xsd:userName>myUsername</xsd:userName>
            <xsd:version>1.0</xsd:version>
         </xsd:auth>
         <xsd:applicationName>wnp</xsd:applicationName>
      </xsd:login>
   </soapenv:Body>
</soapenv:Envelope>

Я использую следующий PHP для вызова той же службы:

<?php
$client = new soapclient('http://www.z2systems.com:8888/neonws/services/GMOService');

$auth_array = array(
    'auth' => array(
      'password' => 'myPwd',
      'userName' => 'myUsername',
      'version' => '1.0'
    ),
    'applicationName' => 'wnp'
 );

$login_results = $client->__soapcall('login', $auth_array);
?>

Когда я звоню, я получаю сообщение об ошибке «Синтаксический анализ WSDL: не удалось найти».

Провайдер веб-службы был менее чем полезен, поэтому любые советы будут с благодарностью!

Ответы [ 2 ]

2 голосов
/ 12 октября 2010

Я думаю, вам нужно предоставить URL-адрес WSDL для PHP, а не какой-либо URL, указывающий на страницу ошибки HTML. Попробуйте открыть http://www.z2systems.com:8888/neonws/services/GMOService в браузере.

EDIT:

Ваш комментарий: попробуйте обернуть ваш auth-массив в дополнительный массив, например так:

$login_results = $client->__soapcall('login', array($auth_array));

аргументы должны быть массивом, а массив, который вы даете, является первым аргументом (если я правильно понимаю esdl).

1 голос
/ 12 октября 2010

Поместите правильный URL в ваш мыльный клиент, и он должен работать.

http://www.z2systems.com:8888/neonws/services/GMOService <это просто указывает на страницу с ошибкой </p>

http://www.z2systems.com:8888/neonws/services/GMOService?wsdl <я думаю, что это URL, который вы ищете </p>

...