Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/03/2016, 12:26
ChicaSexual
 
Fecha de Ingreso: marzo-2016
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Nusoap register a una class

Hola chicos

Soy nueva en este foro, espero que sean caballeros y me respondan

Estoy creando un webservice y me funciona si lo hago por procedimiento pero si lo hago orientado a objetos no se como hacerle

Intente ponerlo dentro del mismo class y tambien poniendo la funcion que invoco en una clase separada, pero no lo logro, ya también intente con doble y un solo punto, entre la clase y la funcion, no se si valga el this

Código PHP:
        $server->register("this..cpcolonia",
            array(
"cp_entrada" => "xsd:string"),
            array(
"cp_salidad" => "xsd:string"),
            
"urn:ejemplo",
            
"urn:ejemplo#cpcolonia",
            
"rpc",
            
"encoded",
            
"Informes del codigo postal"); 
y cuando consumo el webservice

Código PHP:
    $result $cliente->call("servicps..cpcolonia"$cp_entrada); 
Me arroja solo esto:

bool(false)

o en ocasiones esto:

array(4) { ["faultcode"]=> string(15) "SOAP-ENV:Client" ["faultactor"]=> string(0) "" ["faultstring"]=> string(84) "error in msg parsing: XML error parsing SOAP payload on line 1: Invalid document end" ["detail"]=> string(0) "" }


El codigo completo es:

Código PHP:
Ver original
  1. class servicps {
  2.     public function cpcolonia($info) {
  3.         global $mybb,$db,$templates;
  4.         $conacento=array("Á","É","Í","Ó","Ú","á","é","í","ó","ú","ü","Ñ","ñ");
  5.         $sinacento=array("A","E","I","O","U","a","e","i","o","u","u","N","n");
  6.         $info=str_replace($conacento,$sinacento,$info);
  7.         $infoultima=explode("|",$info);
  8.         if(preg_match("/,/i",$infoultima[0])==TRUE){
  9.             $lugares=explode(",",$infoultima[0]);
  10.             $asentamiento_busqueda=$lugares[0];
  11.             $municipio_busqueda=$lugares[1];
  12.             $sql="SELECT * FROM cps WHERE ASENTAMIENTO_SA LIKE '%".ltrim($asentamiento_busqueda)."%' AND `MUNICIPIO_SA` LIKE '%".ltrim($municipio_busqueda)."%' LIMIT 10";
  13.         }else{
  14.             $sql="SELECT * FROM cps WHERE CP LIKE '%".$infoultima[0]."%' LIMIT 10";
  15.         }
  16.         $resultado = $db->query($sql);
  17.         $tipobusquedacp=$infoultima[1];
  18.         while ($fila_res=$db->fetch_array($resultado)){
  19.             $salida.=$fila_res['asentamiento'].",".$fila_res['municipio'].",";
  20.             $salida.=$fila_res['ciudad'].",".$fila_res['estado'].",".$fila_res['cp']."|";
  21.         }
  22.         return $salida;
  23.     }
  24.  
  25.    public function servicio(){
  26.         require_once "./lib/nusoap.php";
  27.         $server = new soap_server();
  28.         $server->configureWSDL("ejemplo", "urn:ejemplo");
  29.         $server->wsdl->addComplexType('cp_entrada',
  30.                                 'complexType',
  31.                                 'struct',
  32.                                 'all',
  33.                                 '',
  34.                                 array('name' => 'info','type' => 'xsd:string'));
  35.         $server->wsdl->addComplexType('cp_salidad',
  36.                                 'complexType',
  37.                                 'struct',
  38.                                 'all',
  39.                                 '',
  40.                                 array('name' => 'salida','type' => 'xsd:string'));
  41.         $server->register("this..cpcolonia",
  42.             array("cp_entrada" => "xsd:string"),
  43.             array("cp_salidad" => "xsd:string"),
  44.             "urn:ejemplo",
  45.             "urn:ejemplo#cpcolonia",
  46.             "rpc",
  47.             "encoded",
  48.             "Informes del codigo postal");
  49.         $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)? $HTTP_RAW_POST_DATA : ”;
  50.         $server->service($HTTP_RAW_POST_DATA);
  51.     }  
  52. }

Consumo completo
Código PHP:
Ver original
  1. $cliente = new nusoap_client("http://localhost/WIO/SIPROCESA/CPS/servi_cps3.php?wsdl");
  2.      
  3.     $error = $cliente->getError();
  4.     if ($error) {
  5.         echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
  6.     }
  7.     $cp_entrada = array( "cp_entrada" => array('info'=> 20000));
  8.     $result = $cliente->call("servicps..cpcolonia", $cp_entrada);
  9.     var_dump($result);

Última edición por ChicaSexual; 13/03/2016 a las 14:25