Foros del Web » Programando para Internet » PHP »

Consumir SOAP con PHP

Estas en el tema de Consumir SOAP con PHP en el foro de PHP en Foros del Web. Muy buenas noches Comunidad! Ante todo, he leido las ayudas y otros temas dentro del foro y en mucho han sido de ayuda para la ...
  #1 (permalink)  
Antiguo 25/03/2012, 17:24
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 19 años, 11 meses
Puntos: 1
Pregunta Consumir SOAP con PHP, Ayuda con el codigo PHP?

Muy buenas noches Comunidad!

Ante todo, he leido las ayudas y otros temas dentro del foro y en mucho han sido de ayuda para la comprensión del funcionamiento de un SOAP
En lo que respecta a como funciona un ws no hay dudas.

Mi duda o desconocimiento, está en que no se como comunicarme con el servidor.
Lo he intentado con Nusoap, pero no logro hacerlo funcionar.
Lo que busco particularmente es un ejemplo de como deberia armar un PHP para poder comunicarme con un web service.

Los datos que me dieron son los siguientes:
1) Usuario del ws: USUARIO
2) Clave de usuario: PASSWORD
3) Nombre de la aplicacion: APLICACION
4) Nombre de usuario para esa aplicacion: USERNAME

5) Endpoint
6) WSDL en Test

Estas dos ultimas, 5 y 6, las separo porque no comprendo tampoco la diferencia entre uno y otro. ¿ Seria mucha molesta si alguien la describe rapidamente ?

Primero abro el XML:
Código XML:
Ver original
  1. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cot="http://xmlns.EMPRESA.com/Core/EBM/Vehiculo/CotizacionVehiculo" xmlns:ebm="http://xmlns.EMPRESA.com/CommonCore/EBM" xmlns:con="http://xmlns.EMPRESA.com/Core/EBO/EMPRESA/CondicionesContratacion">

Según me comentaron en el documento del pedido, el header tiene que estar siempre y con este formato:

Código XML:
Ver original
  1. <soapenv:Header>
  2.     <user>USUARIO</user>
  3.     <pwd>PASSWORD</pwd>
  4. </soapenv:Header>


Y luego el cuerpo del mensaje, asi:
Código XML:
Ver original
  1. <soapenv:Body>
  2.     <cot:CalcularCotizacionVehiculoEBM>
  3.       <ebm:EBMHeader>
  4.         <ebm:Sender>
  5.           <ebm:userName>USERNAME</ebm:userName>
  6.           <ebm:Application>APLICACION</ebm:Application>
  7.           <ebm:Country>ARG</ebm:Country>
  8.         </ebm:Sender>
  9.         <ebm:Target>EMPRESA</ebm:Target>
  10.       </ebm:EBMHeader>
  11.       <cot:DataArea> --- Otros datos </cot:DataArea>
  12.     </cot:CalcularCotizacionVehiculoEBM>
  13.   </soapenv:Body>


Cierro el codigo:
Código XML:
Ver original
  1. </soapenv:Envelope>


Hasta aquí todo perfecto, ya que comprendo la estructura del XML y demas.... pero como lo aplico?
Si no me equivoco, debo enviar esta estructura al WSDL pero de que manera?
Como me conecto y envio esta estructura?

Finalmente, obtendría una respuesta también en XML a la estructura que estoy enviando, la cual supongo que debo parsear y utilizar para exponerla online.


Bien, espero haber sido claro.
Como les comentaba, comprendo gran parte del proceso, pero necesito comprender que o como debo hacer para utilizar todo.

Saludos y gracias!
__________________
Diseñador y Desarrolador en Proyecto81 WebStudio

Última edición por daenor; 25/03/2012 a las 18:07 Razón: Mejorar explicación del tema en el titulo
  #2 (permalink)  
Antiguo 25/03/2012, 21:16
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 19 años, 11 meses
Puntos: 1
Respuesta: Consumir SOAP con PHP

Estoy intentando seguir este aporte:
http://www.forosdelweb.com/f18/aport...rvices-836517/
Pero aun me quedan muchas dudas.
Si puedo sacarlo solo avisaré, mientras cualqueir cosa es bienvenida :)

Saludos!
__________________
Diseñador y Desarrolador en Proyecto81 WebStudio
  #3 (permalink)  
Antiguo 30/03/2012, 05:14
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Consumir SOAP con PHP

Te paso un link de donde saque yo la forma mas sencilla de hacerlo y es muy prolija.

http://www.vankouteren.eu/blog/2009/...-soap-example/

Yo tuve que utilizar soap en el trabajo para conectarme a un wsdl y me funciono joya.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #4 (permalink)  
Antiguo 30/03/2012, 05:59
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Consumir SOAP con PHP

Un ejemplo rápido con SoapClient:

Código PHP:

//Creas el cliente soap con la ruta del wsdl y el endpoint (lo demás es opcional)
//El endpoint suele venir en el wsdl (no siempre), en caso de no venir necesitas 'location'
$soap = new SoapClient('ruta_fichero_wsld',array('location'=>Endpoint,'trace'=>true,'exceptions'=>false));

//Luego
//Creas un array con la relación campo=>valor, en la documentación tienen que venir (se puede sacar también del wsdl)
$array=array("usuario"=>USUARIO,.........);

//Y luego lanzas el comando y tendrás un array como respuesta
$array_respuesta $soap->__soapCall("comando",$array);
//$array_respuesta = $soap->comando($usuario,....); Es lo mismo pero escrito diferente 

Última edición por cluster28; 30/03/2012 a las 06:04
  #5 (permalink)  
Antiguo 30/03/2012, 06:06
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 19 años, 11 meses
Puntos: 1
Respuesta: Consumir SOAP con PHP

Ajam! Excelente! Bien, comprendo con estos ejemplos los pasos a seguir, tengo que aplicarlos.
Una consulta.
Cual sería la diferencia entre "Endpoint" y "WSDL en Test"? Viendo las URLs, lo unico distinto que vi es que el "WSDL..." tiene un "?wsdl" al final, pero a que se debe?
Voy a ir haciendo pruebas con lo que voy comprendiendo hasta ahora.
Desde ya, cualquier otro ejemplo o comentario es bienvenido :) Mientras más se pueda nutrir el post mejor para posteriores consultas de usuarios :)
__________________
Diseñador y Desarrolador en Proyecto81 WebStudio
  #6 (permalink)  
Antiguo 02/04/2012, 01:42
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: Consumir SOAP con PHP

El endpoint es la url dónde enviarás la consulta. Y el WSDL puede ser un fichero o una url desde dónde se cargará la estructura de la solicitud que deberás seguir para construir el mensaje SOAP completo.

En el WSDL suele haber una etiqueta 'address' con un atributo 'location' que suele venir el endpoint de esa consulta. No siempre, por eso SoapCliente tiene la opción de pasarle el endpoint a través de 'location'.

Etiquetas: consumir, soap, wsdl, xml
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:09.