Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problema consumiendo un webservice (https://www.clubdelphi.com/foros/showthread.php?t=60599)

azulin 07-10-2008 14:59:56

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


La franja horaria es GMT +2. Ahora son las 20:29:09.

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