Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Delphi para la web (https://www.clubdelphi.com/foros/forumdisplay.php?f=51)
-   -   Alguien ha usado directamente el webservice de consulta al padron de AFIP (https://www.clubdelphi.com/foros/showthread.php?t=90513)

giulichajari 29-06-2016 14:27:07

Alguien ha usado directamente el webservice de consulta al padron de AFIP
 
Hola amigos...estoy tratando de programar usando directamente los webservices de AFIP, es decir sin librerias externas..
ya tengo mi crt y mi key para homologacion...

el caso es que importe el webservice de padron de nivel 3:
https://awshomo.afip.gov.ar/padron-p...rviceImpl?WSDL

y usando el componente HTTPRio de esta manera

Código Delphi [-]
begin
admin:=TIniFile.Create(ExtractFilePath(Application.ExeName )+ 'caja.ini');
  ECUIT:=Copy(MaskEdit1.Text,0,2) + Copy(MaskEdit1.Text,4,8) + Copy(MaskEdit1.Text,13,1);
 //   Fsign:=obtenersign(respuestaXML));
  TLogin.unicoLogin;


   xml2:=NewXMLDocument;
   xml1:=NewXMLDocument;

   xml1.LoadFromFile(ExtractFilePath(Application.ExeName)+ 'cuit.xml');

   content:=(RIOCuit as padronAFIP.ContribuyenteNivel3SelectServiceImpl).get(xml1.XML.Text,login.armarToken,login.armarSign)  ;
   xml2.XML.Text:=content;
   xml2.Active:=True;
   xml2.SaveToFile(ExtractFilePath(Application.ExeName) + 'archivocliente.xml');

end;
obtengo un error Exception class $C0000005 with message 'access violation at 0x00923065: read of address 0x00000000'. Process TPV.exe (3216)

segun vi en internet los ceros significan que hago referencia a un puntero inexistente..hice un showmessage de login.sign y login.token y todo va bien...
el error es en la linea
Código Delphi [-]
content:=(RIOCuit as padronAFIP.ContribuyenteNivel3SelectServiceImpl).get(xml1.XML.Text,login.armarToken,login.armarSign)  ;

muchas gracias desde ya

Casimiro Notevi 29-06-2016 19:43:56

Por favor, no olvides poner títulos descriptivos a tus preguntas, que ya no eres un novato en los foros ;)

giulichajari 29-06-2016 19:55:49

Cita:

Empezado por Casimiro Notevi (Mensaje 506608)
Por favor, no olvides poner títulos descriptivos a tus preguntas, que ya no eres un novato en los foros ;)

ok mil disculpas...

y no sabes donde puede haber un error?

Casimiro Notevi 29-06-2016 21:12:19

Tendrás que comprobar poniendo un punto de ruptura en esa línea y mirando los valores que tienen, a ver si así encuentras el que está a nulo.

gatosoft 29-06-2016 23:28:34

La línea que inicas tiene varios elementos. y debes comprobar de forma aislada donde puede ocurrir el error.

Código Delphi [-]
content:=(RIOCuit as padronAFIP.ContribuyenteNivel3SelectServiceImpl).get(xml1.XML.Text,login.armarToken,login.armarSign)  ;

Los ceros en el mensaje que muestras no necesariamente puede hacer referencia a un objeto no instanciado. Puede ser error accesando a un campo que no reconoce debido a que hay un TypeCast Erróneo. (Es Posible).

Para hacer la prueba aislada, te recomiendo verificar primero las funciones y variables que llamas dentro del GET

1) xml1.XML.Text. Verifica que llegue texto
2) login.armarToken y login.armarSign==> Verifica que la variable login esté instanciada
3) Luego verifica que RIOCuit no sea null
4) ¿padronAFIP.ContribuyenteNivel3SelectServiceImpl es una clase o devuelve una clase.?

Me quedala duda si el procedimiento que llamas al principio TLogin.unicoLogin; deberia asignarse a una variable o simplemente es un procedimiento de clase que ejecuta algo específico.

saludo,

giulichajari 30-06-2016 14:09:53

1 Archivos Adjunto(s)
Cita:

Empezado por gatosoft (Mensaje 506613)
La línea que inicas tiene varios elementos. y debes comprobar de forma aislada donde puede ocurrir el error.

Código Delphi [-]
content:=(RIOCuit as padronAFIP.ContribuyenteNivel3SelectServiceImpl).get(xml1.XML.Text,login.armarToken,login.armarSign)  ;

Los ceros en el mensaje que muestras no necesariamente puede hacer referencia a un objeto no instanciado. Puede ser error accesando a un campo que no reconoce debido a que hay un TypeCast Erróneo. (Es Posible).

Para hacer la prueba aislada, te recomiendo verificar primero las funciones y variables que llamas dentro del GET

1) xml1.XML.Text. Verifica que llegue texto
2) login.armarToken y login.armarSign==> Verifica que la variable login esté instanciada
3) Luego verifica que RIOCuit no sea null
4) ¿padronAFIP.ContribuyenteNivel3SelectServiceImpl es una clase o devuelve una clase.?

Me quedala duda si el procedimiento que llamas al principio TLogin.unicoLogin; deberia asignarse a una variable o simplemente es un procedimiento de clase que ejecuta algo específico.

saludo,

1-xml1.XML.Text.. si llega, hice un showmessage y me lo muestra..es el contenido de un archivo xml, que corresponde al cuit a consultar y que debe respetar un dtd...

Tlogin.unicoLogin= esto corresponde al patron singleton..para no estar logueandome en la afip cada vez que solicito consultar un cuit..tengo ese metodo de clase:

Código Delphi [-]
class function TLogin.unicoLogin:TLogin;

begin
  if login<>nil then
    begin
      if login.expiro=False then
         begin
            Result:=login;
         end
         else
         begin
           login.actualizarsigntoken;
           Result:=login;
         end;
    end
    else
    begin
    login:=Tlogin.Loguearse('padron-puc-ws-consulta-nivel3');
    login.respuestaXML(login.generarCMS(login.guardarXML()));

    end;
end;

para lo mismo tengo una variable global en la unidad donde esta la clase login..les dejo la unit completa adjunta..
3-padronAFIP.ContribuyenteNivel3SelectServiceImpl: ese metodo esta en la unidad creada por el wsdl importer a partir del webservice de consulta al padron...
la verdad no se que puede ser..de ultima mas tarde les mando una captura de pantalla con el debug

giulichajari 21-08-2016 00:25:47

Ya me funciono. Tengo la consulta al padron sin bibliotecas de terceros! todo propio..jeje. Aparentemente habia que enviar el sign y el token sin armarlo. osea como es devuelto por el webservice debe ser enviado..

maur 20-11-2016 03:45:21

Estoy haciendo la consulta al servicio de PUC y me dice que el computador no esta autorizado? sabes si tengo que agregar algun servicio en la pagina de afip con la clave fiscal?
Es de uso publico este servicio?


La franja horaria es GMT +2. Ahora son las 14:13: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