Foros del Web » Programando para Internet » PHP »

Primer ensayo con NUSOAP (Fatal error !)

Estas en el tema de Primer ensayo con NUSOAP (Fatal error !) en el foro de PHP en Foros del Web. Bueno eso estoy intentando obtener datos en mi localhost a partir de un servicio web externo y no logro hacerlo funcionar, lo raro es que ...
  #1 (permalink)  
Antiguo 22/03/2008, 12:32
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Primer ensayo con NUSOAP (Fatal error !)

Bueno eso estoy intentando obtener datos en mi localhost a partir de un servicio web externo y no logro hacerlo funcionar, lo raro es que si funciona en el debuger de phped (mi editor) pero desde el navegador me tira un error que no entiendo, a ver si pueden darme una mano, les dejo aca el codigo y el error.

Código PHP:
<?php
   
include_once('../lib/nusoapforphp5/lib/nusoap.php');
   
   
//GeoIpService
   
$wsdlURL "http://www.webservicex.net/geoipservice.asmx?wsdl";
   
$soap = new soapclient($wsdlURL,array(true));

   
$result $soap->call("GetGeoIPContext");
   if(
$error $soap->getError()){ die($error);}
   echo 
$result["GetGeoIPContextResult"]["CountryName"]; 

?>
Y el error:

Fatal error: Uncaught SoapFault exception: [Client] Function ("call") is not a valid method for this service in C:\xampp\htdocs\lab\webservice\geoipservice.php:8 Stack trace: #0 [internal function]: SoapClient->__call('call', Array) #1 C:\xampp\htdocs\lab\webservice\geoipservice.php(8) : SoapClient->call('GetGeoIPContext') #2 {main} thrown in C:\xampp\htdocs\lab\webservice\geoipservice.php on line 8
  #2 (permalink)  
Antiguo 22/03/2008, 15:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Primer ensayo con NUSOAP (Fatal error !)

Al parecer el problema es por las diferentes versiones de PHP y de la librerías SOAP, ya que en las nuevas versiones de PHP, puedes llamar directamente al método como si fuera una instancia de la clase.

Prueba esto:
Código PHP:
<?php
   
include_once('../lib/nusoapforphp5/lib/nusoap.php');
   
   
//GeoIpService
   
$wsdlURL "http://www.webservicex.net/geoipservice.asmx?wsdl";
   
$soap = new soapclient($wsdlURL,array(true));

   
$result $soap->GetGeoIPContext();
   if(
$error $soap->getError()){ die($error);}
   echo 
$result["GetGeoIPContextResult"]["CountryName"]; 

?>
Saludos.
  #3 (permalink)  
Antiguo 24/03/2008, 15:08
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Re: Primer ensayo con NUSOAP (Fatal error !)

Gracias GatorV, funciono perfecto. :)

Solo una cosa mas, soap tiene alguna forma de acceder a los datos, o sea algun metodo para mostrar en pantalla uno de los items devueltos ?, por ejemplo en mi $result tengo esto:

Código PHP:
object(stdClass)#3 (1) {
  
["GetGeoIPContextResult"]=>
  
object(stdClass)#4 (5) {
    
["ReturnCode"]=>
    
int(1)
    [
"IP"]=>
    
string(14"200.117.192.64"
    
["ReturnCodeDetails"]=>
    
string(12"Record Found"
    
["CountryName"]=>
    
string(9"ARGENTINA"
    
["CountryCode"]=>
    
string(2"AR"
  
}

Cual seria la forma correcta de acceder a CountryName ?

Gracias
  #4 (permalink)  
Antiguo 24/03/2008, 15:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Primer ensayo con NUSOAP (Fatal error !)

Prueba usando:
Código PHP:
echo $result->GetGeoIPContextResult->CountryName
Saludos.
  #5 (permalink)  
Antiguo 25/03/2008, 16:51
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Re: Primer ensayo con NUSOAP (Fatal error !)

100x100 logico pero no funciono :(
lo unico que se me ocurre es:
Código PHP:
foreach ($result as  $values){
      foreach(
$values as $key => $value){      
            if(
$key == 'CountryName'){
                echo 
$value
            }
      }
  } 
Pero es mucho codigo (nada elegante) para una accion tan simple, si hay alguna otra idea se agradece.
  #6 (permalink)  
Antiguo 25/03/2008, 17:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Primer ensayo con NUSOAP (Fatal error !)

Muy raro, seguro que no te sirvió de la forma que te puse?, en si debería de funcionar sin problemas..

Saludos.
  #7 (permalink)  
Antiguo 26/03/2008, 16:34
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Re: Primer ensayo con NUSOAP (Fatal error !)

Si, seguro no hay resultados, tambien lo intente como metodos
$result->GetGeoIPContextResult()->CountryName();
y peor porque tira errores.


  #8 (permalink)  
Antiguo 26/03/2008, 17:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Primer ensayo con NUSOAP (Fatal error !)

Claro debe de tirar errores porque no son funciones, mmm puedes probar pasarlo a un arreglo:
Código PHP:
echo $result["GetGeoIPContextResult"]["CountryName"]; 
¿Que resultados te da?

Saludos.
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 21:32.