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 13-09-2021
razorxxx razorxxx is offline
Miembro
 
Registrado: jul 2015
Posts: 19
Poder: 0
razorxxx Va por buen camino
Problemas con HTTPRIOBeforePost en Delphi Sydney

Cita:
Empezado por didou Ver Mensaje
Buenas tardes, me he actualizado a Delphi Sydney (10.4) y resulta que el evento HTTPRIOBeforePost ha cambiado,
antes los argumentos eran (CONST HTTPReqResp: THTTPReqResp; Data: Pointer) y ahora (const HTTPReqResp: THTTPReqResp; Client: THTTPClient)

la función InternetSetOption que se usa dentro del evento antes se le pasaba como parametros InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, nil, Sizeof(CERT_CONTEXT))
y ahora InternetSetOption(Client, INTERNET_OPTION_CLIENT_CERT_CONTEXT, nil, Sizeof(CERT_CONTEXT))
y devuelve siempre false o sea "Error, Internet SSL certificate"

Mi fuente con lo anterior a delphi 10.4 comentado:

Código Delphi [-]
procedure TGestionSII_1_1EnviarDatCli.HTTPRIOBeforePost(const HTTPReqResp: THTTPReqResp; Client: THTTPClient);//Data: Pointer);
var
  Store : IStore;
  Certs : ICertificates;
  Cert : ICertificate2;
  CertContext : ICertContext;
  PCertContext : PCCERT_CONTEXT;
  vNombreCertificado: OleVariant;
const
  INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84;
begin
  vNombreCertificado:= HdParam(parSfnCertificadoNombreSII).AsString;
  Store := CoStore.Create;
  Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY', CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );
  Certs:=Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, vNombreCertificado, False ); { Buscar certificado por nombre }
  if Certs.Count > 0 then
  begin
    Cert := IInterface(Certs.Item[1]) as ICertificate2;
    CertContext := Cert as ICertContext;
    CertContext.Get_CertContext(Integer(PCertContext));
//    if not InternetSetOption(Data, INTERNET_OPTION_CLIENT_CERT_CONTEXT, PCertContext, Sizeof(CERT_CONTEXT)) then
    if not InternetSetOption(Client, INTERNET_OPTION_CLIENT_CERT_CONTEXT, PCertContext, Sizeof(CERT_CONTEXT)) then
      BoxMsg('Error, Internet SSL certificate');
  end else
    BoxMsg('Error, NO HAY CERTIFICADO');
end;
Alguien me puede ayudar por favor, gracias.
Buenas a todos! Me pasa lo mismo que a este señor. Al parecer, el problema viene desde Delphi Rio (10.3), con la 10.2 funcionaba. Efectivamente, el procedimiento ha cambiado y si no añades la unit System.Net.HttpClient ni siquiera te va a compilar (unit que debería añadirse sola cuando añades un objeto HTTPRio en vista diseño).

En otros foros algunos comentan la posibilidad de sustituir la WinInet por WinHTTP, y la función InternetSetOption por WinHttpSetOption:
Código:
If WinHttpSetOption(Client, WINHTTP_OPTION_CLIENT_CERT_CONTEXT, PCertContext, Sizeof(CERT_CONTEXT)) = False Then ...
Sin embargo, el problema persiste.

¿Alguien lo ha conseguido solucionar?

Gracias de antemano.
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
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco keys Internet 4170 Hace 2 Semanas 17:29:05
AEAT envio de datos vía Webservice problemas con WSDL CelsoO Internet 11 09-10-2019 20:03:41
webService Soap de la Administración Digital Española notific@ apicito Internet 3 31-01-2017 11:25:28
Error en Webservice funcion envio de sms webmasterplc Delphi para la web 5 25-07-2013 20:10:29
Problemas con envío de XML a un WebService davidvamo Internet 1 13-02-2007 15:49:20


La franja horaria es GMT +2. Ahora son las 09:55:40.


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