Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2010, 07:47
spasmos
 
Fecha de Ingreso: marzo-2007
Mensajes: 12
Antigüedad: 17 años, 2 meses
Puntos: 0
Servicios web - Error de conexión a SOAP desde PHP

Buenos dias,

Estoy intentando utilizar servicios web por medio de SOAP desde PHP utilizando las funciones nativas de PHP5.
La intención es realizar una conexión con el proveedor del servicio y recuperar los articulos que dicho proveedor ofrece. Para ello el proveedor nos ha proporcionado una URL y una API con los metódos pero nada más hacer la conexión ya emite un error sin posibildiad de seguir avanzando.

Paso a detallar el codigo que utilizo para conectarme y el error que me da:

php:

$servicio="http://..../ServiciosCliente.svc?wsdl"; //url del servicio
$client = new SoapClient($servicio);

El Error:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: <message> 'ServiciosCliente_Login_InputMessage' already defined in /home/web/.../andorra.php:8 Stack trace: #0 /.../andorra.php(8): SoapClient->SoapClient('http://mayorist...') #1 {main} thrown in /home/web/.../andorra.php on line 8

Si vas a la URL del servicio directamente desde el navegador da esta respuesta:

<wsdl:definitions name="ServiciosCliente" targetNamespace="http://...">
<wsdl:import namespace="http://tempuri.org/" location="http://.../Servicios/ServiciosCliente.svc?wsdl=wsdl0"/>

<wsdl:types>

<xsd:schema targetNamespace="http://.../Imports">
<xsd:import schemaLocation="http://.../Servicios/ServiciosCliente.svc?xsd=xsd0" namespace="http://..."/>
<xsd:import schemaLocation="http://.../Servicios/ServiciosCliente.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
<xsd:import schemaLocation="http://.../Servicios/ServiciosCliente.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/NovaEngelMayoristas.Dominio.Entidades"/>
<xsd:import schemaLocation="http://.../Servicios/ServiciosCliente.svc?xsd=xsd3" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</xsd:schema>
</wsdl:types>

<wsdl:message name="ServiciosCliente_Login_InputMessage">
<wsdl:part name="parameters" element="tns:Login"/>
</wsdl:message>

<wsdl:message name="ServiciosCliente_Login_OutputMessage">
<wsdl:part name="parameters" element="tns:LoginResponse"/>
</wsdl:message>

He substituido el nombre del proveedor por los puntos pero como se puede observar el error de conexión tiene que ver con ServiciosCliente_Login_InputMessage. Para acceder a los datos nos hemos de logar utilizando una funcion Login(usuario,contrasenya) y e intentado pasar los datos de usuario y contrasenya al realizar la conexión pero no ha funcionado.

Para verificar que no es un problema del codigo php me he conectado por SOAP a eBay y he recuperado las funciones disponibles y ningún problema utilizando estas lineas:

php:
$client = new SoapClient('http://developer.ebay.com/webservices/latest/ShoppingService.wsdl');
var_dump($client->__getFunctions());

¿Alguien me puede decir si el fallo es mio que tendria que pasar algun parametro más al realizar la conexión con el proveedor o es un fallo de su servicio?

Gracias,