Ver Mensaje Individual
  #40  
Antiguo 10-12-2015
espinete espinete is offline
Miembro
 
Registrado: mar 2009
Posts: 286
Reputación: 16
espinete Va camino a la fama
Hola!

Pues sí, creo que lo tengo todo, a falta de probar en modo producción.
Esta semana ha habido varios cortes del servicio (avisan por email cuando tienen previsto uno), pero conseguí hacer pruebas para enviar una factura, consultar el estado de una factura, obtener el listado de organismos disponibles, anular una factura, etc.

Mañana intentaré poner algunos ejemplos, pero ahora mismo tengo este a mano: Consultar Administraciones:

Código Delphi [-]
procedure TfrmMain.Button3Click(Sender: TObject);
var
    answ : ConsultarAdministracionesResponse;
    htpr: THTTPRIO;
    sphdr: TSOAPHEADER;
    WS: FacturaSSPPWebServiceProxyPort;
    UnidadDir : UnidadDir3;
    i:integer;
begin
    if comboCertificate.ItemIndex=-1 then
    begin
      showmessage('Debe seleccionar primero un certificado en el desplegable.');
      exit;
    end;
    
    Listbox1.items.clear;

        //Creamos los headers, necesarios para la petición SOAP
        sphdr := TSOAPHEADER.create;

        // Creo el HTTP, que utilizaré como vehículo
        htpr := THTTPRIO.create(Self);

        //Aquí trabajamos con el propio httprio, donde podemos poner cabeceras, asignar eventos, etc...

        htpr.SOAPHeaders.Send(sphdr);
        htpr.OnBeforeExecute := HTTPRIO1BeforeExecute;

        // Al crear la instancia del WS, le asigno el httprio que he creado y he manipulado...
        WS:= GetFacturaSSPPWebServiceProxyPort(FALSE, '', htpr);
        try
            answ := WS.consultarAdministraciones;
        except
            on e:exception do showmessage(e.Message);
        end;

        if answ.resultado.codigo='0' then
        begin
            UnidadDir := UnidadDir3.Create;
            for i:=0 to length(answ.administraciones)-1 do
            begin
                UnidadDir := answ.administraciones[i];
                begin
                    listbox1.items.append(UnidadDir.codigo + ' - ' + UnidadDir.nombre )
                end;
            end;
            UnidadDir.Free;
        end;
end;

El evento HTTPRIO1BeforeExecute creo recordar que ya lo publiqué en otro post más arriba.
Cuando tenga más tiempo editaré el post original añadiendo todas las funciones.
Responder Con Cita