elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Webservice, problema el retornar un dato con un SoapServer(PHP)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Webservice, problema el retornar un dato con un SoapServer(PHP)  (Leído 4,683 veces)
egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Webservice, problema el retornar un dato con un SoapServer(PHP)
« en: 15 Enero 2011, 18:50 pm »

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.
Código
  1. <xsd:complexType name="Target">
  2.   <xsd:all>
  3.      <xsd:element name="id" type="xsd:int"/>
  4.      <xsd:element name="name" type="xsd:string"/>
  5.      <xsd:element name="contador" type="xsd:int"/>
  6.      <xsd:element name="max_contador" type="xsd:int"/>
  7.    </xsd:all>
  8. </xsd:complexType>
  9.  

Esta es la clase que deberia ser la clase del dato que envio
Código
  1. class Target{
  2. var $id;
  3. var $name;
  4. var $contador;
  5. var $max_contador;
  6.    function Target($id, $name, $contador, $max_contador)
  7.    {
  8.        $this->id= $id;
  9.        $this->name = $name;
  10.        $this->contador = $contador;
  11.        $this->max_contador = $max_contador;
  12.    }
  13. }

La función previamente registrada por el server y describida por el WSDL
Código
  1. function achievements($session){
  2.   //aqui retorno un dato cualquiera, pero sin embargo me lo rechaza el cliente.
  3.   $struct = new Target(1, "LOL",1,10);
  4.   return $struct;
  5. }
  6.  

El servidor Soap en PHP.
Código
  1. $classmap = array('Target'=>'Target');
  2.           $param =  array(
  3. 'encoding'=>'UTF-8',
  4. 'soap_version' => SOAP_1_2,
  5. "classmap"=>$classmap
  6. );
  7.  
  8. $server = new SoapServer("gameCommunity.wsdl",$param);
  9. $server->addFunction('achievements');
  10.  
  11. $server->handle();
  12.  


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.


En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Webservice, problema el retornar un dato con un SoapServer(PHP)
« Respuesta #1 en: 16 Enero 2011, 02:41 am »

Hasta que porfín encontre el error (fue casualidad)

Tenia describido el mensaje de salida esta manera
Código
  1. <message name="AchievementsOutput">
  2. <part name="return" type="xsd:Target" />
  3.  </message>
  4.  

Y era
Código
  1. <message name="AchievementsOutput">
  2. <part name="return" type="tns:Target" />
  3.  </message>
  4.  

Se fijaron TRES LETRAS producia mi error!!!

Ya gracias por todos los que se dignaron por lo menos leer el tema.
Saludos a todos!

Nota al Moderador:
Sorry por el doublepost.


En línea

PMR_92

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Webservice, problema el retornar un dato con un SoapServer(PHP)
« Respuesta #2 en: 3 Octubre 2014, 01:25 am »

Hola! leyendo tu tema me intereso mucho, es que tengo un problema no se si me puedes decir cual de las funciones tienes descritas en el archivo WSDL es que me urgeeeeeeeeeee  :huh:
En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Webservice, problema el retornar un dato con un SoapServer(PHP)
« Respuesta #3 en: 3 Octubre 2014, 03:37 am »

Ya no recuerdo bien aqui está el WSDL xD
Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <wsdl:definitions
  3.    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  4.    xmlns:tns="http://localhost/gameCommunity"
  5.    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  6.    xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
  7.    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
  8.    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  9.    targetNamespace="http://localhost/gameCommunity">
  10.    <wsdl:types>
  11.        <xsd:schema targetNamespace="http://localhost/gameCommunity" elementFormDefault="qualified">            
  12. <xsd:complexType name="Target">
  13. <xsd:sequence>
  14. <xsd:element name="id" type="xsd:int"/>
  15. <xsd:element name="name" type="xsd:string"/>
  16. <xsd:element name="contador" type="xsd:int"/>
  17. <xsd:element name="max_contador" type="xsd:int"/>
  18. </xsd:sequence>
  19. </xsd:complexType>
  20. <xsd:complexType name="Achievement">
  21. <xsd:sequence>
  22. <xsd:element name="id" type="xsd:int"/>
  23. <xsd:element name="name" type="xsd:string" />
  24. <xsd:element name="targets" minOccurs="1" maxOccurs="10" type="tns:Target" />
  25. </xsd:sequence>
  26. </xsd:complexType>  
  27. <xsd:element name="ArrayOfAchievement">
  28. <xsd:complexType>
  29. <xsd:sequence>
  30. <xsd:element maxOccurs="1200" minOccurs="1" name="item" type="tns:Achievement"/>
  31. </xsd:sequence>
  32. </xsd:complexType>
  33. </xsd:element>
  34. <xsd:element name="UnlockCode">
  35. <xsd:simpleType>
  36. <xsd:restriction base="xsd:string">
  37. <xsd:enumeration value="unlock_false" />
  38. <xsd:enumeration value="unlock_true" />
  39. <xsd:enumeration value="unlock_complete" />                
  40. </xsd:restriction>
  41. </xsd:simpleType>
  42. </xsd:element>
  43. <xsd:element name="UnlockParam">
  44.                <xsd:complexType>
  45.                    <xsd:sequence>                        
  46. <xsd:element minOccurs="1" name="session" type="xsd:string" />
  47. <xsd:element minOccurs="1" name="logro" type="xsd:int" />
  48. <xsd:element minOccurs="1" name="objetivo" type="xsd:int" />
  49. <xsd:element minOccurs="1" name="veces" type="xsd:int" />
  50.                    </xsd:sequence>
  51.                </xsd:complexType>
  52.            </xsd:element>
  53. </xsd:schema>
  54.  
  55. <xsd:element name="Status">
  56. <xsd:simpleType>
  57. <xsd:restriction base="xsd:string">
  58. <xsd:enumeration value="status_ok" />
  59. <xsd:enumeration value="status_wrong_user" />
  60. <xsd:enumeration value="status_enabled_server" />
  61. <xsd:enumeration value="status_server_temporarily_disabled" />
  62. <xsd:enumeration value="status_server_off" />
  63. <xsd:enumeration value="status_irc_server_is_disabled" />
  64. <xsd:enumeration value="status_requires_an_update" />
  65. </xsd:restriction>
  66. </xsd:simpleType>
  67. </xsd:element>
  68. <xsd:element name="AuthParam">
  69. <xsd:complexType>
  70. <xsd:sequence>
  71. <xsd:element minOcurrs="1" name="username" type="xsd:string" />
  72. <xsd:element minOcurrs="1" name="game" type="xsd:string" />
  73. <xsd:element minOcurrs="1" name="ver" type="xsd:int" />
  74. </xsd:sequence>
  75. </xsd:complexType>
  76. </xsd:element>
  77. <xsd:element name="Auth">
  78. <xsd:complexType>
  79. <xsd:sequence>
  80. <xsd:element minOcurrs="1" name="nonce" type="xsd:string" />
  81. <xsd:element minOcurrs="1" name="info" type="xsd:string" />
  82. <xsd:element minOcurrs="1" name="status" type="tns:Status" />
  83. </xsd:sequence>
  84. </xsd:complexType>
  85. </xsd:element>
  86. <xsd:element name="LoginParam">
  87.                <xsd:complexType>
  88.                    <xsd:sequence>
  89.                        <xsd:element minOccurs="1" name="username" type="xsd:string"/>
  90.                        <xsd:element minOccurs="1" name="password" type="xsd:string"/>
  91. <xsd:element minOccurs="1" name="authcode" type="xsd:string"/>
  92.                    </xsd:sequence>
  93.                </xsd:complexType>
  94.            </xsd:element>          
  95. <xsd:element name="Session">
  96.                <xsd:complexType>
  97.                    <xsd:sequence>
  98. <xsd:element minOccurs="1" name="session_key" type="xsd:string"/>
  99. <xsd:element minOccurs="1" name="time_expire" type="xsd:int"/>
  100. <xsd:element minOccurs="1" name="time_last_login" type="xsd:int"/>
  101. <xsd:element minOccurs="1" name="ip_last_login" type="xsd:string"/>
  102. <xsd:element minOccurs="1" name="game_achievement_score" type="xsd:int"/>
  103. <xsd:element minOccurs="1" name="total_achievement_score" type="xsd:int"/>
  104. <xsd:element minOccurs="1" name="game_highscore" type="xsd:int"/>
  105.                    </xsd:sequence>
  106.                </xsd:complexType>
  107.            </xsd:element>
  108.    </wsdl:types>
  109.  
  110. <wsdl:message name="AuthInput">
  111. <wsdl:part name="parameters" element="tns:AuthParam" />
  112. </wsdl:message>
  113. <wsdl:message name="AuthOutput">
  114. <wsdl:part name="parameters" element="tns:Auth" />
  115. </wsdl:message>
  116. <wsdl:message name="LoginInput">
  117. <wsdl:part name="parameters" element="tns:LoginParam" />    
  118. </wsdl:message>
  119. <wsdl:message name="LoginOutput">
  120. <wsdl:part name="parameters" element="tns:Session" />
  121. </wsdl:message>
  122.  
  123. <wsdl:message name="UnlockInput">
  124. <wsdl:part name="parameters" element="tns:UnlockParam" />
  125. </wsdl:message>
  126. <wsdl:message name="UnlockOutput">
  127. <wsdl:part name="parameters" element="tns:UnlockCode" />
  128. </wsdl:message>
  129.    <wsdl:message name="AchievementsInput">
  130. <wsdl:part name="parameters" element="tns:Session" />
  131. </wsdl:message>
  132. <wsdl:message name="AchievementsOutput">
  133. <wsdl:part name="parameters" element="tns:ArrayOfAchievement" />
  134. </wsdl:message>
  135. <wsdl:message name="AchievementsImageInput">
  136.        <wsdl:part name="parameters" element="tns:AchievementsImageParam" />        
  137. </wsdl:message>
  138. <wsdl:message name="AchievementsImageOutput">
  139. <wsdl:part name="parameters" element="tns:ArrayOfData" />
  140. </wsdl:message>  
  141.  
  142.    <wsdl:portType name="AuthPortType">
  143. <wsdl:operation name="Auth">
  144.            <wsdl:input message="tns:AuthInput" wsaw:Action="http://localhost/gameCommunity/auth"/>
  145.            <wsdl:output message="tns:AuthOutput" wsaw:Action="http://localhost/gameCommunity/auth"/>
  146.        </wsdl:operation>  
  147.        <wsdl:operation name="Login">
  148.            <wsdl:input message="tns:LoginInput" wsaw:Action="http://localhost/gameCommunity/login"/>
  149.            <wsdl:output message="tns:LoginOutput" wsaw:Action="http://localhost/gameCommunity/login"/>
  150.        </wsdl:operation>      
  151.    </wsdl:portType>
  152.  
  153. <wsdl:portType name="AchievementPortType">
  154. <wsdl:operation name="Unlock">
  155. <wsdl:input message="tns:UnlockInput" wsaw:Action="http://localhost/gameCommunity/unlock"/>
  156. <wsdl:output message="tns:UnlockOutput" wsaw:Action="http://localhost/gameCommunity/unlock" />
  157. </wsdl:operation>
  158. <wsdl:operation name="Achievements">
  159. <wsdl:input message="tns:AchievementsInput" wsaw:Action="http://localhost/gameCommunity/achievements"/>
  160. <wsdl:output message="tns:AchievementsOutput" wsaw:Action="http://localhost/gameCommunity/achievements"/>
  161. </wsdl:operation>
  162. <wsdl:operation name="AchievementsImage">
  163. <wsdl:input message="tns:AchievementsImageInput" wsaw:Action="http://localhost/gameCommunity/achievementsImage"/>
  164. <wsdl:output message="tns:AchievementsImageOutput" wsaw:Action="http://localhost/gameCommunity/achievementsImage"/>
  165. </wsdl:operation>
  166. </wsdl:portType>
  167.  
  168.    <wsdl:binding name="AuthBinding" type="tns:AuthPortType">
  169.        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
  170.        <wsdl:operation name="Auth">
  171.            <soap:operation soapAction="http://localhost/gameCommunity/auth" style="document"/>
  172. <wsdl:input>
  173.                <soap:body use="literal"/>
  174.            </wsdl:input>
  175.            <wsdl:output>
  176.                <soap:body use="literal"/>
  177.            </wsdl:output>
  178.        </wsdl:operation>
  179. <wsdl:operation name="Login">
  180.            <soap:operation soapAction="http://localhost/gameCommunity/login" style="document"/>
  181. <wsdl:input>
  182.                <soap:body use="literal"/>
  183.            </wsdl:input>
  184.            <wsdl:output>
  185.                <soap:body use="literal"/>
  186.            </wsdl:output>
  187.        </wsdl:operation>
  188.    </wsdl:binding>
  189.  
  190. <wsdl:binding name="AchievementBinding" type="tns:AchievementPortType">
  191. <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
  192. <wsdl:operation name="Unlock">
  193. <soap:operation soapAction="http://localhost/gameCommunity/unlock" style="document"/>
  194. <wsdl:input>
  195. <soap:body use="literal" />
  196. </wsdl:input>
  197. <wsdl:output>
  198. <soap:body use="literal" />
  199. </wsdl:output>
  200. </wsdl:operation>
  201. <wsdl:operation name="Achievements">
  202. <soap:operation soapAction="http://localhost/gameCommunity/achievements" style="document"/>
  203. <wsdl:input>
  204. <soap:body use="literal" />
  205. </wsdl:input>
  206. <wsdl:output>
  207. <soap:body use="literal"/>
  208. </wsdl:output>
  209. </wsdl:operation>
  210. <wsdl:operation name="AchievementsImage">
  211. <soap:operation soapAction="http://localhost/gameCommunity/achievementsImage" style="document"/>
  212. <wsdl:input>
  213. <soap:body use="literal"/>
  214. </wsdl:input>
  215. <wsdl:output>
  216. <soap:body use="literal"/>
  217. </wsdl:output>
  218. </wsdl:operation>    
  219. </wsdl:binding>
  220.    <wsdl:service name="GameCommunity">
  221.        <wsdl:port name="AuthPort" binding="tns:AuthBinding">
  222.            <soap:address location="http://localhost/gameCommunity/Auth.php"/>
  223.        </wsdl:port>
  224. <wsdl:port name="AchievementPort" binding="tns:AchievementBinding">
  225.            <soap:address location="http://localhost/gameCommunity/achievement.php"/>
  226.        </wsdl:port>
  227.    </wsdl:service>
  228. </wsdl:definitions>
  229.  
Ahí está xD
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Webservice, problema el retornar un dato con un SoapServer(PHP)
« Respuesta #4 en: 4 Octubre 2014, 17:49 pm »

Siempre que trabajo con web services, antes de realizar un cliente para que consuma el web services, utilizo SoapUI para verificar que todo este correctamente y asi descarto que cualquier problema futuro pueda ser con el web services.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problea al retornar un Array con webservice.net
.NET (C#, VB.NET, ASP)
apache_scrc 4 5,440 Último mensaje 19 Agosto 2010, 18:10 pm
por apache_scrc
Android (Descomprimir String GZIP que viene de Webservice .NET)
Java
seba123neo 4 5,829 Último mensaje 28 Noviembre 2010, 01:47 am
por seba123neo
[Ayuda] Webservice (archivo wsdl) .NET
.NET (C#, VB.NET, ASP)
oscarj24 4 11,089 Último mensaje 11 Julio 2011, 07:24 am
por oscarj24
Problema con programa java al coger dato sql
Java
CoYoTeDaN 1 2,400 Último mensaje 23 Febrero 2013, 22:59 pm
por CoYoTeDaN
Ayuda WEbService plz.
.NET (C#, VB.NET, ASP)
visualfree 2 2,781 Último mensaje 21 Abril 2013, 07:28 am
por .::IT::.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines