2010-10-12 91 views
2

我正在尝试编写PHP以调用Web服务。使用了SoapUI,我构建了以下调用服务,它的工作原理:使用PHP调用具有复杂数据类型的SOAP Web服务

<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); 
?> 

当我打这个电话,我m返回错误“解析WSDL:无法找到”。

该Web服务的提供者一直不太有用,所以任何建议将不胜感激!

回答

2

我认为你需要为PHP提供WSDL url而不是指向HTML错误页面的一些URL。尝试在浏览器中打开http://www.z2systems.com:8888/neonws/services/GMOService

编辑:

给您发表评论:尽量包住你的auth-阵列中的其它阵列像这样:

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

的参数必须是一个数组,数组你”重新给予是第一个参数(如果我正确理解esdl)。

+0

感谢网址。一直在尝试。但是,当我将它指向WSDL时,我收到一个错误“无UserAuth,请验证您的数据。 – 2010-10-14 21:18:46

+0

@Dennis:请参阅我的编辑。 – oezi 2010-10-15 06:17:37

+0

Oezi,谢谢你,我会发誓我曾尝试过,但 – 2010-10-18 03:26:59