Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-12-2008
Fistandantilus Fistandantilus is offline
Miembro
 
Registrado: ago 2008
Posts: 10
Poder: 0
Fistandantilus Va por buen camino
Problemas con Deserializacion

Hola a todos!,

Me estoy rompiendo al cabeza desde hacer rato y no encuentro nada resolver este tema de deserialización. El caso es el siguiente:
Tengo que pegarle a un Web Service, entonces importo toda la info con el WSDL importer de Delphi. Todas las llamadas que le haga me retorna un Obj "Response" con la siguiente estructura:
Código:
      <s:complexType name="Response">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="Status" type="tns:ProcessCode" />
          <s:element minOccurs="0" maxOccurs="1" name="Objects" type="tns:ArrayOfObjectBase" />
          <s:element minOccurs="0" maxOccurs="1" name="Errors" type="tns:ArrayOfError" />
        </s:sequence>
      </s:complexType>

      <s:simpleType name="ProcessCode">
        <s:restriction base="s:string">
          <s:enumeration value="Successfully" />
          <s:enumeration value="Error" />
        </s:restriction>
      </s:simpleType>

      <s:complexType name="ArrayOfObjectBase">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="ObjectBase" nillable="true" type="tns:ObjectBase" />
        </s:sequence>
      </s:complexType>

      <s:complexType name="ObjectBase">
        <s:sequence>

        </s:sequence>
      </s:complexType>

      <s:complexType name="User">
        <s:complexContent mixed="false">
          <s:extension base="tns:ObjectBase">
            <s:sequence>
                <s:element minOccurs="0" maxOccurs="1" name="Prop1" type="s:string" /> 
            </s:sequence>
          </s:extension>
        </s:complexContent>
      </s:complexType>

      <s:complexType name="ArrayOfError">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="Error" nillable="true" type="tns:Error" />
        </s:sequence>
      </s:complexType>

      <s:complexType name="Error">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="Code" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="Name" type="tns:ErrorCode" />
          <s:element minOccurs="0" maxOccurs="1" name="Description" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Trace" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Source" type="s:string" />
        </s:sequence>
      </s:complexType>
Puse el objeto User como ejemplo, supongamos que al ejecutar el método "login" me retorna lo siguiente

Código:
 <Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="">
  <Status>Successfully</Status> 
- <Objects>
-   <ObjectBase xsi:type="User">
       <prop1> asd </prop1>
     </ObjectBase>
  </Objects>
  <Errors /> 
</Response>
La idea del objeto "ObjectBase" es tener una clase de la cual toda respuesta va a ser heredada y asi no tener que crear un obj "Response" por cara metodo del ws

Entonces despues de debugear durante horas me encuentro que cuando tiene que leer el tag "<ObjectBase xsi:type="User">" reserva el espacio para el tipo "ObjectBase" pero no para el tipo "User", luego cuando deserializa los datos para saber con cuantos se va a encontrar usa una funcion que retorna la cantidad de propiedades del obj, ahora esta funcion la llama con "ObjectBase" en vez de con "User" por ende no lee nada ya que esta retorna '0'. Al fin al cabo no me termina deserializando nada de la informacion importante que nesecito.

Por favor alguien que halla usado Web service en delphi que responda, lo nesecito urgente y no se como seguir.

Saludos!
Responder Con Cita
  #2  
Antiguo 17-12-2008
Fistandantilus Fistandantilus is offline
Miembro
 
Registrado: ago 2008
Posts: 10
Poder: 0
Fistandantilus Va por buen camino
Alguien tiene al menos un manual groso en pdf de uso de WebService en Delphi que me pueda mandar?
La info que encuentro en internet un muy poca y muy simple no me sirve para lo que estoy tratando de hacer...

si alguien tiene o encuentra buena info mandenme los link pliz.

saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:57:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi