![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Saludos,
Me termine dando por vencido con Indy (he probado con las diferentes versiones, la 9, la 10, buscado en internet y no hay caso )He decidido darle una oportunidad a la biblioteca Synapse que es OpenSource. Con esta biblioteca no he tenido ningun problema para realizar las invocaciones GET El siguiente paso fue eliminar las dependencias con los componentes NetHttpClient He declarado una interface en la unidad Afip.PublicAPI.HttpClient y delegado la implementacion al usuario:
Cualquier clase que implemente IHttpClient le sirve a mi clase TAfipQuery para comunicarse con el servidor REST Se proveen dos implementaciones: - La que ya teniamos hasta ahora, usando los components NetHttpClient Esa implementacion la he movido a la unidad Afip.PublicAPI.NetHttpClient; esta encapsulado dentro de la clase TNativeHttpClient - La nueva implementacion usando la biblioteca Synapse, en la unidad Afip.PublicAPI.SynapseHttpClient He incluido tambien en el repo la propia biblioteca Synapse, con solo agregar la ruta en Delphi, ya esta listo para funcionar Cita:
El constructor de TAfipQuery ahora requiere una referencia a una interface de este tipo (dependency injection)
Y eleva una excepcion si le pasamos NIL...
He eliminado las funciones que operaban (por asi llamarlo de una manera) "al estilo static", o de funcion de clase (class function) porque ahora no tengo mas el constructor por defecto y no quiero seguir acoplando dependencias Por ultimo he actualizado el demo para que cumpla con esta refactorizacion; tambien he incluido la posibilidad de usar una u otra biblioteca en tiempo de ejecucion (Synapse o NetHttp) La biblioteca Synapse deberia funcionar con versiones mas antiguas de Delphi e incluso FPC (Lazarus) |
|
#2
|
||||
|
||||
|
Saludos,
He terminado por desacoplar completamente el diseño He implementado el parser usando la biblioteca lkJSON El código ya está publicado, ahora tenemos dos clases que implementan las interfaces parser, usando dos bibliotecas distintas para tratar con JSON: la biblioteca System.Json de Delphi y la lkJSON De este modo se amplia la compatiblidad con versiones de Delphi mas antiguas He incluido algunas reformas, por ejemplo ahora el constructor va a tambien requerir las interfaces parser. De este modo el usuario puede incluir su implementacion si asi lo quiere |
|
#3
|
||||
|
||||
|
#4
|
||||
|
||||
|
Hola nuevamente
He creado un port para FreePascal de esta biblioteca Hay algunas pequeñas diferencias con la version para Delphi (mas que nada las dependencias, tuve que tocar bastante la biblioteca lkJSON) Pueden obtenerlo acá Saludos |
|
#5
|
|||
|
|||
|
Hola yo lo hice con 2 componentes de las ICS
TSslHttpCli y TSslContext; // Consulta a Padrón Nivel 3 WSPN3
Última edición por fcios fecha: 04-08-2016 a las 01:50:38. |
|
#6
|
|||
|
|||
|
He visto el código y esta todo muy bueno.
El problema es que necesitamos entre todos buscar alguna solución para poder usar tu código con las librerías que trae Delphi XE8. Es que intento por mi parte usar lo menos posible componentes de terceros, ya que en ocaciones me ha pasado que al cambiar de versión de Delphi no hay actualización de los mismos y es engorroso ponerce a tocarlos para hacerlos compatibles. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
|
#7
|
||||
|
||||
|
Yo utilizo ese codigo con Delphi 2010. Compila sin ningun problema. Eso si, necesitas la biblioteca Synapse para la parte de HTTP, ya que con Indy he tenido problemas; y alguna otra biblioteca para tratar con JSON, yo he usado lkJson
De hecho, el mismo codigo lo he traducido a FreePascal (hay algunas cuestiones menores relacionadas con el soporte a genericos y ayudantes, pero es en esencia el mismo codigo) Si queres usar otras bibliotecas simplemente tenes que implementar un par de interfaces: Las que convierten JSON a objetos de negocio, definidas en Afip.PublicAPI.Parsers.pas Código PHP:
Código PHP:
Última edición por AgustinOrtu fecha: 27-06-2017 a las 05:15:12. |
|
#8
|
|||
|
|||
|
Perdón que mi mensaje anterior salió dos veces. Dío error al enviarlo la primera vez y cuando lo mande la segunda no me dicuenta que ya se había grabado la primera
Saludos
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Factura Electronica - Afip Argentina | Joe_Balda | Varios | 30 | 30-01-2021 04:10:34 |
| Factura Electrónica AFIP Argentina | SergioFrey | Noticias | 2 | 19-05-2017 21:02:03 |
| Como informar Factura Electrionica 'B' AFIP ARGENTINA | adripugliesso | Varios | 1 | 24-08-2015 14:14:28 |
| Ayuda Web Service AFIP Argentina | patriciojgf | Delphi para la web | 1 | 04-11-2014 17:46:34 |
| Padrón telefónico | rruffino | SQL | 2 | 09-08-2008 16:27:02 |
|