2010-12-10 36 views
0

J'essaye de connecter le serveur de savon PHP avec le client écrit en C#. WSDL est créé de cette façon:Comment changer le nom en WSDL généré par Zend_Soap_AutoDiscover

$autodiscover = new Zend_Soap_AutoDiscover('Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex'); 
$autodiscover->setClass('Soap_Service1'); 
$autodiscover->handle(); 

puis je reçois:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:tns="http://www.xx.de/soap/version/1" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    targetNamespace="http://www.xx.de/soap/version/1" 
    name="Soap_Services1" 
> 

ce 'name = "Soap_Services1"' attribut analysable en C# est moche (Services.Soap_Services1Service). Bien sûr, le nom est connecté à ServiceBinding et PortType. Y at-il un moyen de le changer sans pirater manuellement la bibliothèque zend?

Répondre

0

Étant donné que vous utilisez le créateur de service de découverte automatique/de savon magique, vous ne pouvez pas remplacer les noms qu'il crée tels quels.

Si vous voulez faire cela, vous pouvez étendre Zend_Soap_AutoDiscover et implémenter votre propre méthode setClass qui utilise votre propre choix de nom lors de la génération du fichier wsdl.

1

Oui. Il suffit de renommer votre classe de service;)

$autodiscover->setClass('CoolServiceName'); 

vous donnera

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:tns="http://www.xx.de/soap/version/1" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    targetNamespace="http://www.xx.de/soap/version/1" 
    name="CoolServiceName" 
> 
0

Tout ce que vous devez faire est de renommer votre classe de service (celui fixé par le setClass() appel) et vous êtes bon .