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 22-10-2019
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.027
Poder: 22
keys Va por buen camino
REST CLIENT con certificado digital

Hola a todos, estoy intentando acceder a un servicio web de la AEAT para el envio de declaraciones. Estoy intentando acceder con los componentes de REST CLIENT (TRESTCLIENT, TRESTREQUEST), y el servicio requiere identificarse con un certificado digital.

No encuentro la forma de indicarle a los componentes el certificado que tienen que utilizar.

Si intento hacer la conexión me sale el error "Unspecified certificate from client". Lógicamente ya que no he indicado el certificado.

Alquien me puede dar una pista. Gracias.

Última edición por keys fecha: 22-10-2019 a las 13:22:49.
Responder Con Cita
  #2  
Antiguo 22-10-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Has visto este hilo? puede que te sirva.
Responder Con Cita
  #3  
Antiguo 22-10-2019
Javierus Javierus is offline
Miembro
 
Registrado: jun 2017
Posts: 88
Poder: 7
Javierus Va por buen camino
Mírate ésto:
https://forums.embarcadero.com/threa...ssageID=937474

A ver si te sirviese

No hay nada en todo ClubDelohi sobre este tema
Responder Con Cita
  #4  
Antiguo 22-10-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Poco, pero algo hay
Es un tema poco preguntado, ciertamente.
Responder Con Cita
  #5  
Antiguo 23-10-2019
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.027
Poder: 22
keys Va por buen camino
Lo primero Gracias.

No se trata del SII, se trata de un sistema que ha sacado la AEAT para presentar declaraciones informativas como el 347, 349, 190, etc ..... Hasta ahora solo lo podian utilizar las declaraciones de mas de 40000 declarados, pero ahora se puede por todas las empresas para presentarlas directamente. Por si ha alguien le interesa el link es https://www.agenciatributaria.es/AEA...l/General.html

Básicamente Consiste en enviar peticiones POST a un servidor, pero hay que identificarse con un certificado.

Lo estoy intentando hacer con los componentes TRESTCLIENT ya que son los que normalmente utilizo para esta cosas. Mirando los enlaces que habeis indicado, algunos ya los habia seguido, a partir del delphi Tokio se debe poder hacer con un helper.

TRESTClientHelper = class helper for TCustomRESTClient;

Pero no consigo hacerlo, mas o menos estoy por aqui.
Código Delphi [-]
     TRESTClientHelper = class helper for TCustomRESTClient
  private
    function GetNeedClientCertificateEvent: TNeedClientCertificateEvent;
    procedure SetNeedClientCertificateEvent(
      const Value: TNeedClientCertificateEvent);
  public
    property OnNeedClientCertificate: TNeedClientCertificateEvent read GetNeedClientCertificateEvent write SetNeedClientCertificateEvent;
  end;

Pero no consigo que al hacer el execute me pase por esos eventos.

Con otros componentes como los indy, TnetHttpClient parece que se puede hacer, pero me gustaria hacerlos con estos.

Gracias
Responder Con Cita
  #6  
Antiguo 23-10-2019
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Leyendo sobre los "helpers" aquí y aquí, no me queda claro que sea lo más apropiado para tu caso, puesto que además dices que "no consigues que pase por esos eventos". ¿No deberías utilizar los eventos de la clase en cuestión, sin más? O bien extender la clase, pero, no usando "helpers", de modo que puedas sobreescribir los métodos que te interesen. Ojo, que, tal vez esté equivocado y se pueda hacer con "helpers" tal como estás intentándolo... acaso algún compañero pueda aportar algo más de luz al asunto.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 23-10-2019
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.027
Poder: 22
keys Va por buen camino
El problema es que la clase TRESTCLIENT no tiene esos eventos. Según he podido leer se hace con los helpers.

http://docwiki.embarcadero.com/Libra...STClientHelper

http://docwiki.embarcadero.com/Libra...tHelper_Events
Responder Con Cita
  #8  
Antiguo 23-10-2019
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Pero, entonces, ¿la definición del "helper" que has puesto arriba es la tuya propia? Pareciera que el propio Delphi ofrece dicho "helper"... de modo que tendrías que usarlo y no crear otro...

P.D. Prueba también a "derivar" de "TRESTRequest", acaso hasta de "TRESTClient"..., en lugar de "TCustomRESTClient"...

P.D.2. Parece que no voy por el buen camino... pero yo sí veo propiedades que acaso puedan usarse en "TCustomRESTClient", pero, no mediante un "helper",... sino derivando una clase de ahí... es más, el propio "TRESTClient", que deriva de "TCustomRESTClient", ofrece las propiedades que pareces necesitar:

Código Delphi [-]
  TRESTClient = class(TCustomRESTClient)
  published
    property Authenticator;
    property Accept;
    property AcceptCharset;
    property AcceptEncoding;
    property AllowCookies;
    property AutoCreateParams;
    property BaseURL;
    property ContentType;
    property FallbackCharsetEncoding;
    property Params;
    property HandleRedirects;
    property RedirectsWithGET;
    property SecureProtocols;
    property ProxyPassword;
    property ProxyPort;
    property ProxyServer;
    property ProxyUsername;
    property RaiseExceptionOn500;
    property SynchronizedEvents;
    property UserAgent;
    property OnHTTPProtocolError;
    property BindSource;
    property OnValidateCertificate;
    property OnNeedClientCertificate;
    property OnAuthEvent;
  end;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 23-10-2019 a las 19:21:18.
Responder Con Cita
  #9  
Antiguo 24-10-2019
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.027
Poder: 22
keys Va por buen camino
Hola.

Esas propiedades que indicas no estan en delphi Tokio, esa es la solución que dan para los delphi anteriores. Segun indica el siguiente enlace.

https://forums.embarcadero.com/threa...ssageID=937474

Código Delphi [-]
TRESTClient = class(TCustomRESTClient)
  published
    property Authenticator;
    property Accept;
    property AcceptCharset;
    property AcceptEncoding;
    property AllowCookies;
    property AutoCreateParams;
    property BaseURL;
    property ContentType;
    property FallbackCharsetEncoding;
    property Params;
    property HandleRedirects;
    property ProxyPassword;
    property ProxyPort;
    property ProxyServer;
    property ProxyUsername;
    property RaiseExceptionOn500;
    property SynchronizedEvents;
    property UserAgent;
    property OnHTTPProtocolError;
    property IPImplementationID;
    property BindSource;
    property OnValidateCertificate;
  end;

En cuanto al helper que sale en la ayuda no consigo encontrar en que unit esta. Por eso lo he añadido yo.

Lo he conseguido hacer con el componente TNetHTTPClient, que si tiene el evento NeedClientCertificate, pero sigo empeñado en hacerlo con los TRESTCLIENT.

Un Saludo.
Responder Con Cita
  #10  
Antiguo 24-10-2019
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Yo he mirado en Delphi 10.3. ¿Acaso no es posible hacerlo tal como quieres, sin más? Quiero decir, usando "helpers" creo que no podría hacerse, directamente, pues, como tú mismo ves, esos "métodos / eventos" no se disparan, puesto que un "helper" "añade", pero, "no hereda", si no me equivoco.

Ahora bien, por otro lado, dices que en tu versión de Delphi, no existen las propiedades que he mencionado... luego no podrías tampoco hacerlo usando "herencia", porque, simplemente, la clase de la que ibas a heredar no cuenta con los métodos / eventos que tú esperas.

Por eso digo que acaso no puedas hacerlo... al menos no con la versión de Delphi que estás usando...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 24-10-2019
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.027
Poder: 22
keys Va por buen camino
Hola otra vez.

Yo creo que es un problema o error del delphi. Ese helper deberia estar definido en la unit REST.Client que es como indica la ayuda.

En la ayuda de delphi tokio http://docwiki.embarcadero.com/Libra...en/REST.Client aparece que contiene esa clase. Pero luego si accedemos a esa unit no esta definida.

En el delphi Rio, pone que la clase esta en Rest.Client http://docwiki.embarcadero.com/Libra...STClientHelper pero luego en es unit no esta http://docwiki.embarcadero.com/Libra...en/REST.Client definida.

Me tendré que dar por vencido y usare TNetHTTPClient.
Responder Con Cita
  #12  
Antiguo 24-10-2019
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Yo también creo que en la versión de Delphi que estás usando no están los métodos que necesitas en la clase de marras, sin embargo, sí están en Delphi 10.3, que, es en la versión de Delphi que yo estoy mirando. Tampoco aquí está el "helper", y, o me equivoco, o no podría usarse para lo que necesitas... pero es cierto que en la ayuda aparece como dices... lo que a mí me confunde un poco. Si yo tuviera que hacer lo que necesitas con la versión de Delphi que tengo entre manos, lo haría usando las propiedades / eventos de la clase en cuestión... no sería necesario "helper" alguno. Puede que en versiones anteriores de Delphi sí fuese necesario... de modo que podría usarse... y yo estoy equivocado respecto de que no pueda usarse.
__________________
David Esperalta
www.decsoftutils.com
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
Conseguir un certificado digital para firmar código dec Varios 148 14-04-2023 09:18:38
Agregar Certificado Digital carlos gonzalez Varios 1 16-08-2019 09:37:15
Problemas con certificado digital Paulao Varios 3 26-09-2011 17:00:46


La franja horaria es GMT +2. Ahora son las 14:38:42.


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