2010-10-12 4 views
2

J'essaye d'écrire PHP pour appeler un service web. En utilisant SoapUI, je construis l'appel suivant au service, qui fonctionne:Appel d'un service Web SOAP avec un type de données complexe en utilisant PHP

<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> 

J'utilise le PHP suivant pour appeler le même service:

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

Quand je fais l'appel, je m récupérant une erreur "Analyse WSDL: impossible de trouver".

Le fournisseur du service Web a été moins qu'utile, donc tout conseil serait grandement apprécié!

Répondre

2

Je pense que vous devez fournir l'URL WSDL à PHP et non une URL pointant vers une page d'erreur HTML. Essayez d'ouvrir http://www.z2systems.com:8888/neonws/services/GMOService dans un navigateur.

EDIT:

vous commenter: essayer d'envelopper votre auth-tableau dans un tableau supplémentaire comme celui-ci:

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

les arguments doivent être un tableau, et le tableau que vous » re donner est le premier argument (si je comprends bien l'esdl). Mettez l'url correcte à la wsdl dans votre soapclient et cela devrait fonctionner.

+0

Merci. Avait essayé cela le long du chemin. Mais quand je le pointe vers le WSDL, je reçois une erreur "Nil UserAuth, s'il vous plaît vérifier vos données –

+0

@Dennis: s'il vous plaît voir mon edit – oezi

+0

Oezi, merci un million.J'aurais juré je l'ai déjà essayé, mais Je n'ai pas dû, ça a fonctionné! –

Questions connexes