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 05-11-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.054
Poder: 22
keys Va por buen camino
Hola a todos.

En el componente TNetHttpClient tienes un evento OnRequestError, intenta capturar el error que te da.

Un Saludo
Responder Con Cita
  #2  
Antiguo 05-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Hola
keys, da lo siguiente, yo la verdad con esos errores nunca he podido saber nada, y da como he dicho al cargar la lista de certificados. Vosotros cargáis dicha lista antes, o le dices como cargarla antes de ejecutar
Código Delphi [-]
NetHTTPClient1.Post(la_url, ss).ContentAsString(tencoding.UTF8);
Código Delphi [-]
---------------------------
BATUZ
---------------------------
Access violation at address 00B19045 in module 'BATUZ.exe'. Read of address 00000004
---------------------------
OK   
---------------------------

Gracias
Responder Con Cita
  #3  
Antiguo 05-11-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.054
Poder: 22
keys Va por buen camino
Prueba primero a poner un certificado sin hacer nada en ese evento.

AnIndex := 0; //o el que tu tengas.

Yo tampoco creo que sea del certificado. ¿No te pasa por el evento OnRequestError que te he comentado ?
Responder Con Cita
  #4  
Antiguo 05-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Hola

Por el error si pasa

Código Delphi [-]
procedure TfrmEnve140CTB.NetHTTPClient1RequestError(const Sender: TObject;
  const AError: string);
begin
  ShowMessage(Aerror);
end;

por el evento
Código Delphi [-]
procedure TfrmEnve140CTB.NetHTTPClient1NeedClientCertificate(const Sender: TObject; const ARequest: TURLRequest; const ACertificateList: TCertificateList; var AnIndex: Integer);
var
  i: Integer;
begin
  AnIndex := 0;
no llega, ambos tienen una parada. Da el error comentado anteriormente y termina.
gracias
Responder Con Cita
  #5  
Antiguo 05-11-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.054
Poder: 22
keys Va por buen camino
¿ y que Contiene Aerror?.
Responder Con Cita
  #6  
Antiguo 05-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Hola

He visto esta nota en 'http://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_an_HTTP_Client'

Nota: Si el método HTTP de la primera solicitud a un servidor que requiere un certificado del lado del cliente no es HEAD o GET (por ejemplo, POST), el código de estado de la respuesta del servidor es 413. Siempre envíe una solicitud HEAD o GET primero. Usar una solicitud HEAD suele ser una mejor opción, ya que se transfieren menos datos.

y lo he probado a realizar lo siguiente
Código Delphi [-]
      NetHTTPRequest1.MethodString := 'HEAD';
      NetHTTPClient1.Head(la_url_pruebas, nil).ContentStream;
pero da lo mismo.
Responder Con Cita
  #7  
Antiguo 05-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
keys

Aerror = Access violation at address 00B19045 in module 'BATUZ.exe'. Read of address 00000004
Responder Con Cita
  #8  
Antiguo 05-11-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.054
Poder: 22
keys Va por buen camino
Yo creo que el problema es de delphi seattle.

Si el error da en ese punto es que tu programa no a podido negociar la conexión con el servidor de hacienda, es decir el protocolo que estan utilizando es diferente. Nosotros cuando empezamos las pruebas nos ocurria algo parecido al hacer los envíos y tampoco llegaba al evento OnNeedClientCertificate, pero si nos mostraba el error, que era distinto. Trabajabamos con el delphi Tokio 10.2.0, es decir la primera que sacaron.

Mirando por internet encontramos lo siguiente https://edn.embarcadero.com/print/44770 es decir que la versión que teniamos no estaba preparada para TLS 1.2 que es lo que recomienda hacienda. Tambien puedes seguir el siguiente enlace https://blog.marcocantu.com/blog/201...ents-1022.html que tambien habla de ello. Actualizamos a delphi 10.2.2 y funciono todo correcto.

Yo lo que te recomiendo es que mires si lo puedes probar en un delphi mas actualizado.

Por otra parte hacienda ha publicado esto.

"Se recomienda hacer uso de protocolos de comunicación seguros con el servicio de entradas, con versiones TLS 1.2 o superiores."

Aunque ahora mismo tienen habilitado el 1.0 y el 1.1, pero me comentaron que puede que luego solo dejen el 1.2 o superior. Para indicarle al componente TNEtHttpClient que trabaje con la verisión del protocolo que nosotros queremos es
Código Delphi [-]
Componente.SecureProtocols := [THTTPSecureProtocol.TLS12];

Esta propiedad solo esta disponible a partir de la version 10.2.2(Tokio) de delphi.

Un Saludo.
Responder Con Cita
  #9  
Antiguo 05-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Buenos días

keys, está claro que es la versión. Por lo que deduzco, y dime si me equivoco, que si lo intento con otros componentes de la misma versión de Delphi, me ocurriría lo mismo.
Voy a echar un vistazo a TsbxHTTPClient, de 'SecureBlackbox 2020'. De todas formas si alguien trabaja con otros componentes, y que le funcione la comunicación, por favor, hacérmelo saber, para ir por ese camino.

Muchas gracias de nuevo.
Responder Con Cita
  #10  
Antiguo 05-11-2020
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.054
Poder: 22
keys Va por buen camino
Si no puedes cambiar la versión de delphi prueba con otros componentes de terceros. No se si con alguno de los otros de delphi funcionará. Los de secureblackbox yo los utilizo para otras cosas, no para enviar y funcionan bien. Si tienes la version 2020 me imagino que estaran adaptados a todos los protocolos.

Un Saludo y suerte.
Responder Con Cita
  #11  
Antiguo 08-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Poder: 18
juramisa Va por buen camino
Entorno pruebas TicketBai

Buenos días

Perdonar mi torpeza. Estoy intentando realizar pruebas de envío LROE, en esta ocasión con Delphi 10.4 Sydney, (Trial) con el siguiente código:

Código Delphi [-]
    // Fichero a enviar 'D:\...\Modelos 140-240\temp\CTB-0001-2020-11-08 12-41-50-ALENVIO.xml.gz'
    if FileExists(DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz') then 
    begin
      NetHTTPClient1.SecureProtocols := [THTTPSecureProtocol.TLS12];
      // Cargo la cabecera de la petición

      NetHTTPRequest1.CustomHeaders['Accept-Encoding'] := el_accept_Encoding;   // 'gzip'
      NetHTTPRequest1.CustomHeaders['Content-Encoding'] := el_Content_Encoding; // 'gzip'
      NetHTTPRequest1.CustomHeaders['Content-Length'] := IntToStr(tamanoFichero(DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz'));
      NetHTTPRequest1.CustomHeaders['Content-Type'] := el_Content_Type;   // 'application/octet-stream'
      NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-version'] := el_eus_bizkaia_n3_version;  // '1.0'
      NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-content-type'] := el_eus_bizkaia_n3_content_type;  // 'application/xml'
      el_eus_bizkaia_n3_data := f_cabecera_LROE(el_concepto, el_subcapitulo, DMBatu.CDSPres.FieldByName('PR020').AsString, DMBatu.CDSPres.FieldByName('PR040').AsString,
                                                                         DMBatu.CDSPres.FieldByName('PR090').AsString, DMBatu.CDSPres.FieldByName('PR100').AsString, DMBatu.CDSPres.FieldByName('PR080').AsString, 
                                                                         IntToStr(ejercicio_presentacion.Value));
      //   '{"con": "LROE", "apa": "1.1", "inte": {"nif": "14XXXXXXA","nrs": "MXXXXXX","ap1": "SXXXXXX","ap2": "JXXXXXXXX"},"drs": {"mode": "140","ejer": "2020"}}'
      NetHTTPRequest1.CustomHeaders['eus-bizkaia-n3-data'] := el_eus_bizkaia_n3_data;

     S := TStringList.Create;
     M := TMemoryStream.Create;

      NetHTTPRequest1.MethodString := 'POST';
      case rg_Entorno.ItemIndex of
        0: begin
            NetHTTPRequest1.Post(la_url_pruebas, // https://pruesarrerak.bizkaia.eus/N3B4000M/aurkezpena
                                 DMBatu.CDSEnvc.FieldByName('EN050').AsString + '.gz',  // Fichero a enviar 'D:\...\Modelos 140-240\temp\CTB-0001-2020-11-08 12-41-50-ALENVIO.xml.gz'
                                 M);
            M.Position := 0;
            S.LoadFromStream(M);
            Memo1.Lines.AddStrings(S);
           end;
        .............
      end;

Pues bien, el certificado me lo pide, como es de ciudadano, me solicita la clave, se la doy y tras un breve tiempo, me da el siguiente error:
'Error sending data: (12030) La conexión con el servidor finalizó anormalmente'


Si alguien que utilice este método, puede corregirme, qué estoy haciendo mal, agradecido.

Muchas gracias a todos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3565 Hace 1 Semana 11:04:13
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 02:42:08.


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