2010-10-12 96 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