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 originalclass servicps {
public function cpcolonia($info) {
global $mybb,$db,$templates;
$conacento=array("Á","É","Í","Ó","Ú","á","é","í","ó","ú","ü","Ñ","ñ"); $sinacento=array("A","E","I","O","U","a","e","i","o","u","u","N","n"); $lugares=explode(",",$infoultima[0]); $asentamiento_busqueda=$lugares[0];
$municipio_busqueda=$lugares[1];
$sql="SELECT * FROM cps WHERE ASENTAMIENTO_SA LIKE '%".ltrim($asentamiento_busqueda)."%' AND `MUNICIPIO_SA` LIKE '%".ltrim($municipio_busqueda)."%' LIMIT 10"; }else{
$sql="SELECT * FROM cps WHERE CP LIKE '%".$infoultima[0]."%' LIMIT 10";
}
$resultado = $db->query($sql);
$tipobusquedacp=$infoultima[1];
while ($fila_res=$db->fetch_array($resultado)){
$salida.=$fila_res['asentamiento'].",".$fila_res['municipio'].",";
$salida.=$fila_res['ciudad'].",".$fila_res['estado'].",".$fila_res['cp']."|";
}
return $salida;
}
public function servicio(){
require_once "./lib/nusoap.php";
$server = new soap_server();
$server->configureWSDL("ejemplo", "urn:ejemplo");
$server->wsdl->addComplexType('cp_entrada',
'complexType',
'struct',
'all',
'',
array('name' => 'info','type' => 'xsd:string')); $server->wsdl->addComplexType('cp_salidad',
'complexType',
'struct',
'all',
'',
array('name' => 'salida','type' => 'xsd:string')); $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");
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)?
$HTTP_RAW_POST_DATA : ”; $server->service($HTTP_RAW_POST_DATA);
}
}
Consumo completo
Código PHP:
Ver original$cliente = new nusoap_client("http://localhost/WIO/SIPROCESA/CPS/servi_cps3.php?wsdl");
$error = $cliente->getError();
if ($error) {
echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
}
$cp_entrada = array( "cp_entrada" => array('info'=> 20000)); $result = $cliente->call("servicps..cpcolonia", $cp_entrada);