Foros del Web » Programando para Internet » PHP »

Servicios web - Error de conexión a SOAP desde PHP

Estas en el tema de Servicios web - Error de conexión a SOAP desde PHP en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/09/2010, 07:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 12
Antigüedad: 17 años, 1 mes
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,
  #2 (permalink)  
Antiguo 24/09/2010, 11:47
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Servicios web - Error de conexión a SOAP desde PHP

Hola spasmos:
1. Comprueba que la direccion wsdl de tu proveedor funciona ok
2. En la llamada al cliente SOAP seguramente has de pasar el array con el servicio que requieres. Consulta la documentación del proveedor, solicita un ejemplo.
3. Normalmente esto
Código PHP:
$servicio="http://..../ServiciosCliente.svc?wsdl"//url del servicio
$client = new SoapClient($servicio); 
no es suficiente.
4. Intenta conectarte a través de una aplicación Java, por ejemplo, a ver si consigues el string de respuesta.

5. En cualquier caso, el error que estás recibiendo es claramente de tu proveedor:


Código PHP:
Fatal errorUncaught SoapFault exception: [WSDLSOAP-ERRORParsing 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 
Es difícil hacer comentarios sin ver la documentación del proveedor. Espero que te sirva de algo, saludos

Etiquetas: servicios, soap
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:11.