Ver Mensaje Individual
  #1  
Antiguo 07-10-2008
azulin azulin is offline
Miembro
 
Registrado: sep 2008
Posts: 13
Reputación: 0
azulin Va por buen camino
Problema consumiendo un webservice

Hola a todos

Estoy tratando de hacer una aplicación Delphi para consumir un servicio web. Este tiene excepciones customizadas y no soy capaz de capturarlas.

El código que me genera Delphi para la execpción customizada es la siguiente:

Código:
ExceptionCustomizada = class(ERemotableException)
  private
    F_code: Integer;
    F_description: WideString;
  published
    property _code: Integer read F_code write F_code;
    property _description: WideString read F_description write F_description;
  end;
Por otra parte, usando la aplicación soapUI obtengo la siguiente respuesta para una petición que devuelve excepción:

Código:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <soapenv:Fault>
         
 [....]
      </soapenv:Fault>
      <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns4:ExceptionCustomizada" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns4="http://......">
         <_code xsi:type="xsd:int">503</_code>
         <_description xsi:type="soapenc:string">No existe ningun codigo = 11111111</_description>
      </multiRef>
   </soapenv:Body>
</soapenv:Envelope>
En mi aplicación Delphi tengo el siguiente código para capturar la excepción:

Código:
  except
    On E : ERemotableException do
      begin
        Memo1.Lines.Add('Excepción!'); //<-- Entra por aqui
      end;
    Else
      ShowMessage('Unknown error');
  end;
El problema que tengo es que necesito capturar los valores de _code y _description (que usando el soapUI lo veo sin problemas). Si en vez del código anterior uso el siguiente..

Código:
  except
    On E : ExceptionCustomizada do
      begin
        Memo1.Lines.Add('Excepción!'); 
      end;
    Else
      ShowMessage('Unknown error'); //<-- Entra por aqui
  end;
.. no me reconoce la execpción y no puedo acceder a esos dos campos que antes he indicado.

¿Qué estoy haciendo mal?

Un saludo y muchisimas gracias por vuestra ayuda
Responder Con Cita