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.

Otras Preguntas y Respuestas


...

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

Conecta