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

0voto

Leonardo-Tadei comentado

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

0voto

pedro_cabrera comentado

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.

0voto

Peter comentado

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

  • Freda0370183 ganó una medalla hace 6 horas

    Club de los 100 - Recibió un total de 100 puntos
  • NilaPilgrim4 ganó una medalla hace 14 horas

    Humano Verificado - Verificó su email
  • ErwinImhoff1 ganó una medalla hace 1 día

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

    Buen Comentario - Comment received +2 upvote
  • FelipeMedel ganó una medalla hace 1 día

    Renovador - Recibió medalla Buena Respuesta en res…
  • FelipeMedel ganó una medalla hace 1 día

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

    Buen Comentario - Comment received +2 upvote
  • FelipeMedel ganó una medalla hace 1 día

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

    Veterano - Primera visita hace más de 180 días
  • EllPanda ganó una medalla hace 1 día

    Regular - Primera visita hace más de 90 días
...

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

Conecta