entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Acceder a Web Service desde php

Tengo que acceder un web service WSDL.

Usando SoapUI, escribo la dirección, cargo el archivo xml (request) y obtengo la respuesta en otro xml.

Lo que no consigo es hacerlo en php, ni usando SoapClient, ni por cURL.

Si alguien me puede ayudar...
Gracias

Leonardo-Tadei comentado Ene 9

Hola @pedro_cabrera,

la forma en que describís el proceso suena bien, y usar SoapClient u otra biblioteca es más simple que usar un WebService a mano...

Tal vez si agregaras tu código en la pregunta y/o el error que obtenés al ejecutarlo podamos ayudarte.

Saludos cordiales

pedro_cabrera comentado Ene 9

como cUrl:

<?php

$strRequest = file_get_contents('request.xml');
$url = 'https://desa.san.gva.es/sicomepsws/services/SolicitudNumeracionVales';

$ch=curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $strRequest);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);

$result = curl_exec($ch);

curl_close($ch);

var_dump($result);

?>

**como ClientSoap:**

<?php 

ini_set('soap.wsdl_cache_enabled',0);
ini_set('soap.wsdl_cache_ttl',0);

$wsdl = 'https://desa.san.gva.es/sicomepsws/services/SolicitudNumeracionVales?wsdl';
$client = new SoapClient($wsdl,array('cache_wsdl' => WSDL_CACHE_NONE,
                                    'soap_version' => SOAP_1_2)
);

var_dump($client->__getFunctions());
var_dump($client->__getTypes());

$request = file_get_contents('request.xml');

$response = $client->nuevaSolicitudNumeracionVales($request);

var_dump($response);

 ?>

En el caso de ClientSoap, no está bien, sé que la llamada a la función requiere un array, pero es que yo recibiré un xml(request) que tengo que pasar al wsdl y obtener otro xml(response), tal como hace el SoapUI.

Gracias

1 Respuesta

2votos

pedro_cabrera Puntos1130

Solucionado:

A traves del SoapClient de PHP.
La función __doRequest.

Ejemplo:

$client = new SoapClient($wsdl);
$respuesta = $client->__doRequest($xml,$url,$accion,$version);

... y ya está.

Gracias Leonardo por atender la pregunta.
Y por favor Peter, no se como dar el tema por terminado.

Un saludo.

Peter comentado Ene 15

Gracias por compartir la solución. Por favor selecciona la respuesta como correcta.

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

  • carlossevi ganó una medalla hace 9 horas

    Buena Respuesta - Recibió +1 votos en respuesta
  • matrixmar8 ganó una medalla hace 1 día

    Club de los 100 - Recibió un total de 100 puntos
  • matrixmar8 ganó una medalla hace 1 día

    Humano Verificado - Verificó su email
  • JoseVillalta ganó una medalla hace 2 días

    Club de los 100 - Recibió un total de 100 puntos
  • JoseVillalta ganó una medalla hace 2 días

    Humano Verificado - Verificó su email
  • Tammya ganó una medalla hace 2 días

    Club de los 100 - Recibió un total de 100 puntos
  • Tammya ganó una medalla hace 2 días

    Humano Verificado - Verificó su email
  • edu_botero ganó una medalla hace 2 días

    Fotogénico - Subió un avatar
  • edu_botero ganó una medalla hace 2 días

    Club de los 100 - Recibió un total de 100 puntos
...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta