Foros del Web » Programando para Internet » PHP »

Problema con Soap en PHP

Estas en el tema de Problema con Soap en PHP en el foro de PHP en Foros del Web. Muy buenas tardes a todos, El problema radica en la obtención de datos de un web services. Para ello empleo soap+php. Estoy realizando pruebas para ...
  #1 (permalink)  
Antiguo 23/04/2011, 11:40
 
Fecha de Ingreso: abril-2011
Mensajes: 23
Antigüedad: 13 años
Puntos: 0
Sonrisa Problema con Soap en PHP

Muy buenas tardes a todos,

El problema radica en la obtención de datos de un web services. Para ello empleo soap+php.

Estoy realizando pruebas para intentar de entender como capturar datos de una respuesta por parte de una "wsdl".

Programo bajo php.

La url es la siguiente -> http://www.w3schools.com/webservices/tempconvert.asmx


Me interesa ver... que al pasar un valor en grados Celsius.. que me devuelva el Fahrenheit... así que bueno... pues pico en la opción esa...

http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit

A continuación os pondré mi sencillo codigo por si alguien me arroja algo de luz, he mirado muchisimo y no encuentro como hacerlo.

Código PHP:
<?php
    
require_once( '../nusoap-0.9.5/lib/nusoap.php' );


    
$c =  new soapclient ('http://www.w3schools.com/webservices/tempconvert.asmx?wsdl');

    
$valor $c -> __getFunctions();
                
    foreach (
$valor as $actual)
    {
            
print_r($actual);
            echo
"<br>";
        }   
            echo 
"<p>"
                    
                
                
                
                

    
//$resultado = $c -> _soapCall("CelsiusToFahrenheit",array());
    
$resultado $c -> CelsiusToFahrenheit('32');
                
                
                
                
    echo 
"<p><p>He aqui el resultado: ";
    echo(
$resultado->CelsiusToFahrenheitResult);    
                
                

    
?>

Como podeis comprobar... lo primero que hago es realizar una llamada para ver que el "wsdl" devuelve el compendio de funciones que tiene.

Y por ultimo solo quiero ver el uso de una de sus funciones .. "CelsiusToFahrenheit".

A continuación os pongo el resultado que me arroja ese código.

Cita:
FahrenheitToCelsiusResponse FahrenheitToCelsius(FahrenheitToCelsius $parameters)
CelsiusToFahrenheitResponse CelsiusToFahrenheit(CelsiusToFahrenheit $parameters)
FahrenheitToCelsiusResponse FahrenheitToCelsius(FahrenheitToCelsius $parameters)
CelsiusToFahrenheitResponse CelsiusToFahrenheit(CelsiusToFahrenheit $parameters)

He aqui el resultado: Error
Como podeis observar... el resultado de convertir de Celsius a Fahreint.. es "error"... .. deberia de dar 98.6.


Alguien que pueda ayudarme.. le estaría muy agradecido.

Saludos y gracias por leerme.

Última edición por sebachili2; 23/04/2011 a las 12:14
  #2 (permalink)  
Antiguo 23/04/2011, 12:58
 
Fecha de Ingreso: abril-2011
Mensajes: 23
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema con Soap en PHP

Buenas a todos de nuevo,

He conseguido solventar el problema.

He de pasar los parametros en formato de array.

Código PHP:
<?php
    
require_once( '../nusoap-0.9.5/lib/nusoap.php' );


    
$c =  new soapclient ('http://www.w3schools.com/webservices/tempconvert.asmx?wsdl');

    
$valor $c -> __getFunctions();
                
    foreach (
$valor as $actual)
    {
            
print_r($actual);
            echo
"<br>";
        }   
            echo 
"<p>"
                    
                
                
                
                

   
$param = array();
   
$param["Celsius"]="32";

    
$resultado $c -> CelsiusToFahrenheit($param);
                
                
                
                
   if(isset(
$fault))
  {
    print 
"<p>Error: "$fault;
  }
  else
{
 print 
"<p> La conversión de Celsius ".   $param["Celsius"] ." a Fahrenheit es ".  $resultado->CelsiusToFahrenheitResult;

}
                
        unset(
$c);
                
                

    
?>

Resultado:

Cita:
FahrenheitToCelsiusResponse FahrenheitToCelsius(FahrenheitToCelsius $parameters)
CelsiusToFahrenheitResponse CelsiusToFahrenheit(CelsiusToFahrenheit $parameters)
FahrenheitToCelsiusResponse FahrenheitToCelsius(FahrenheitToCelsius $parameters)
CelsiusToFahrenheitResponse CelsiusToFahrenheit(CelsiusToFahrenheit $parameters)

La conversión de Celsius 32 a Fahrenheit es 89.6
Un saludo.

Etiquetas: soap
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:53.