Ver Mensaje Individual
  #12  
Antiguo 29-03-2025
Avatar de seccion_31
seccion_31 seccion_31 is offline
Miembro
 
Registrado: ene 2017
Posts: 472
Reputación: 10
seccion_31 Va por buen camino
Cita:
Empezado por ramherfer Ver Mensaje
A ver, yo sigo con el tema de comprobación del servicio soap esté activo o no. Soy cabezón por naturaleza

He estado probando con el tema de consulta vacia a la AEAT, pero me da errores "Consultando a la AEAT" y la verdad, tampoco he conseguido averiguar el motivo, ya que la consulta esta calcada de la que se realiza en la pantalla de consultas que funciona a la perfección.

Si la comprobación la realizo solo al entrar en la aplicación, tengo el inconveniente que si la aplicación no se cierra y el servicio deja de estar activo y se emite una o varias facturas, ya tenemos el lio montado.

Si la comprobación la realizo antes de realizar un envío, se va a poner a realizar consulta tras consulta hasta que detecte que el servicio está activo y la envie.

Todo ello desconociendo si hay algún limite de consultas, o si la operación de consultas continuadas puede desembocar en algún tipo de baneo por parte de mis amigos de la AEAT.

Entonces basandome en que la URL del EndPoint de mis amigos del fisco responde con una redirección, eso debiera bastar para indicar que está activo ya que si no se encuentra activo, no debiera de haber respuesta con esa redirección. Entonces con la siguiente función trato de hacer esa comprobación que activaría o desactivaría un flag y la imagen correspondiente en el StatusBar para que el usuario sea consciente en todo momento de como está el patio. La he probado con https://prewww1.aeat.es/wlpl/TIKE-CO.../VerifactuSOAP y con https://prewww1.aeat.es/wlpl/TIKE-CO...factuSOAP?wsdl y aparentemente cumple su función.

Código Delphi [-]
 
Function VerificarServicioSOAP(URL:String): Boolean;
var
  HTTP: TIdHTTP;
  SSLIO: TIdSSLIOHandlerSocketOpenSSL;

begin
  result := false;

  HTTP := TIdHTTP.Create(nil);
  SSLIO := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);

  try
    try
      // Forzar el uso de TLS 1.2
      SSLIO.SSLOptions.Method := sslvTLSv1_2;
      SSLIO.SSLOptions.Mode := sslmClient;
      HTTP.IOHandler := SSLIO;

      HTTP.Head(URL);
      //ShowMessage(Format('%s Disponible', [url]));
      result := true;
    except
      on E: EIdHTTPProtocolException do
      begin
        if (E.ErrorCode = 302) then begin
          //ShowMessage(Format('%s Disponible (Redireccionando)', [url]));
          result := True;
        end else begin
          //ShowMessage(Format('%s No Disponible: %s', [URL, E.Message]));
          result := False;
        end;
      end;
      on E: Exception do
        //ShowMessage(Format('%s No Disponible: %s', [URL, E.Message]));
    end;
  finally
    HTTP.Free;
  end;

end;

No se si estoy en un error. A ver que os parece y me alegraría que fuera válido.

Un saludo,

gracias por el aporte !

Hoy con el error del fin de semana, lamentablamente, sigue dando como valida (al menos en las pruebas que acabo de hacer).... cuando realmente no esta disponible. Si pongo una URL inexistente SI salta el error.


Cita:
Codigo[20009].UNSUCCESSFUL EXECUTION CAUSED BY AN UNAVAILABLE RESOURCE. REASON 00C90081, TYPE OF RESOURCE 00000210, AND RESOURCE NAME DBTCCSOR.TSTCCSOR.00000001. SQLCODE=-904, SQLSTATE=57011, DRIVER=4.33.43
en la version 2.1 , a cambio la consulta "nula" da como inactiva.

Saludos !