Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Envío de registros y sus respuestas (https://www.clubdelphi.com/foros/forumdisplay.php?f=66)
-   -   Código para enviar en Delphi 11 (https://www.clubdelphi.com/foros/showthread.php?t=97595)

pesadillator 21-07-2025 12:35:51

Código para enviar en Delphi 11
 
Tengo hecho ya todo el código en delphi 10.2, usando la librería CAPICOM, el certificado lo asigno en el evento OnBeforePost del HTTPRIO, con las siguiente instrucción:
Código Delphi [-]
InternetSetOption(Data,INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext,Sizeof(CERT_CONTEXT))
pero en delphi 11 la cabecera del evento a cambiado y ya no tengo el parámetro:

Código Delphi [-]
 Data:Pointer

¿como se hace entonces?
como la librería capicom esta ya desactualizada se podría hacer usando en vez de HTTPRIO, NETHTTP?
¿Alguna pista de como hacerlo?

Neftali [Germán.Estévez] 21-07-2025 13:22:44

Tal vez usando condicionales:

Código Delphi [-]
    {$IFDEF VER150}
    procedure WebNodeBeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer);
    {$ELSE}
    procedure WebNodeBeforePost(const HTTPReqResp: THTTPReqResp; Data: THTTPClient);
    {$ENDIF}

Y luego pruebas a realizar tu la conversión (también con un codicional):

Código Delphi [-]
  cargaCertificado(Pointer(data), cert, pass);

pesadillator 24-07-2025 11:13:36

¿No se puede hacer directamente en delphi 11?
¿Todo el mundo lo esta haciendo con capicom? en delphi 10 o anterior?

Garada 25-07-2025 11:55:49

¿Dónde guardas el certificado que usas?

En este hilo se habló del tema y esta sería la opción de D11:
https://www.clubdelphi.com/foros/sho...6417&page=3#49

razorxxx 28-07-2025 09:24:16

Cita:

Empezado por pesadillator (Mensaje 566508)
Tengo hecho ya todo el código en delphi 10.2, usando la librería CAPICOM, el certificado lo asigno en el evento OnBeforePost del HTTPRIO, con las siguiente instrucción:
Código Delphi [-]
InternetSetOption(Data,INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext,Sizeof(CERT_CONTEXT))
pero en delphi 11 la cabecera del evento a cambiado y ya no tengo el parámetro:

Código Delphi [-]
 Data:Pointer

¿como se hace entonces?
como la librería capicom esta ya desactualizada se podría hacer usando en vez de HTTPRIO, NETHTTP?
¿Alguna pista de como hacerlo?

He hablado varias veces de este asunto en otros post, e incluso en otros foros. En versiones modernas de Delphi, en el OnBeforePost de HTTPRIO es super fácil asignarle el certificado y te ahorras usar CAPICOM:

Código:

procedure TPVERIFACTU.HTTPRIOHTTPWebNodeBeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);
var
  CertStream: TMemoryStream;
begin
    CertStream := TMemoryStream.Create;
    CertStream.LoadFromFile('<RUTA_AL_CERTIFICADO>');
    HTTPReqResp.ClientCertificate.Stream := CertStream;
    HTTPReqResp.ClientCertificate.Password := '<CONTRASEÑA_CERTIFICADO>';
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 16:44:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi