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 hace 6 días

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 hace 6 días

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 hace 1 día

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

  • ortzi ganó una medalla hace 18 horas

    Buena Pregunta - Recibió +1 votos en pregunta
  • SoCu ganó una medalla hace 20 horas

    Buena Pregunta - Recibió +1 votos en pregunta
  • FelipeMedel ganó una medalla hace 20 horas

    Renovador - Recibió medalla Buena Respuesta en res…
  • FelipeMedel ganó una medalla hace 20 horas

    Medallista - Recibió un total de 10 medallas
  • FelipeMedel ganó una medalla hace 20 horas

    Buena Respuesta - Recibió +1 votos en respuesta
  • FelipeMedel ganó una medalla hace 20 horas

    Renovador - Recibió medalla Buena Respuesta en res…
  • FelipeMedel ganó una medalla hace 20 horas

    Buena Respuesta - Recibió +1 votos en respuesta
  • SoCu ganó una medalla hace 20 horas

    Buena Pregunta - Recibió +1 votos en pregunta
...

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

Conecta