Hola a todos, soy nuevo por aca.
Tengo una problema que no he podido resolver aún (he estado varios dias dandole vuelta por todas partes)
Estoy creando un WebService
sin nusoap(y no pienso usarlo), usando directamente las clases que ofrece PHP. El problema esta cuando llamo una función usando un cliente de mi servicio (uso el WcfTestClient) este me lo rechaza diciendo que no puede deserializar la salida.
Este es el dato que quiero retornar.
<xsd:complexType name="Target">
<xsd:all>
<xsd:element name="id" type="xsd:int"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="contador" type="xsd:int"/>
<xsd:element name="max_contador" type="xsd:int"/>
</xsd:all>
</xsd:complexType>
Esta es la clase que deberia ser la clase del dato que envio
class Target{
var $id;
var $name;
var $contador;
var $max_contador;
function Target($id, $name, $contador, $max_contador)
{
$this->id= $id;
$this->name = $name;
$this->contador = $contador;
$this->max_contador = $max_contador;
}
}
La función previamente registrada por el server y describida por el WSDL
function achievements($session){
//aqui retorno un dato cualquiera, pero sin embargo me lo rechaza el cliente.
$struct = new Target(1, "LOL",1,10);
return $struct;
}
El servidor Soap en PHP.
$classmap = array('Target'=>'Target'); 'encoding'=>'UTF-8',
'soap_version' => SOAP_1_2,
"classmap"=>$classmap
);
$server = new SoapServer("gameCommunity.wsdl",$param);
$server->addFunction('achievements');
$server->handle();
Realmente no se en donde puede estar el problema, siendo que sí uso los datos primitivos como int, string, boolean, etc... el cliente de prueba me los acepta bien sin embargo, sí defino un dato, este me lo rechaza.
Espero encontrar aqui la solución ya que he perdido mucho tiempo buscando la solución.
Les agradezco de antemano, muchas gracias Saludos a todos.