PDA

Ver la Versión Completa : TidMultiPartFormDataStream problema con ARBA


gguerrini
03-10-2018, 19:22:56
Hola Buenos Dias, estoy generando un POST para enviarle al servidor de ARBA, pero de respuesta, recibo un error, quisiera saber si alguien me ayuda que me puede estar faltando
El código es:


procedure Tu_principal.BitBtn1Click(Sender: TObject);
var
FResponse: string;
Str, sURL:String;
DATOS : TidMultiPartFormDataStream;
begin

// Crear el componente para los envíos
Fhttp := TIDHttp.Create(nil);

// Crear la estructura de respuesta
FResp := TStringStream.Create('');

// Tratar los parámetros
sURL := Trim(edURL.Text);

DATOS := TidMultiPartFormDataStream.Create;

DATOS.AddFormField('user', edUsuario.Text);
DATOS.AddFormField('password', edPassword.Text);
DATOS.AddFormField('file',edFile.Text , 'text/xml');

mDatos.Lines.Clear;
try
DATOS.Position := 0;
Fhttp.Request.ContentType := DATOS.RequestContentType;

fhttp.Get(sURL , TStream(nil));
Fhttp.Post(sURL , DATOS , FResp);
mDatos.Text := FResp.DataString;

except
on E:Exception do begin
MessageDlg(E.Message, mtWarning, [mbOK], 0);
end;
end;

DATOS.Free;
FResp.Free;
Fhttp.Free;

end;




y el ERROR que me da



<?xml version='1.0' encoding='ISO-8859-1'?><DFEError>
<tipoError>ERROR INESPERADO</tipoError>
<codigoError>01</codigoError>
<mensajeError>&lt;![CDATA[[Número de Transacción: 31825214]. Tipo: AUTENTICACION. Reportar al Sector Seguridad.]]/&gt;</mensajeError>
</DFEError>



Desde muchas gracias por la ayuda.

Casimiro Notevi
03-10-2018, 19:26:21
Recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

Neftali [Germán.Estévez]
04-10-2018, 12:07:38
y el ERROR que me da


<?xml version='1.0' encoding='ISO-8859-1'?><DFEError>
<tipoError>ERROR INESPERADO</tipoError>
<codigoError>01</codigoError>
<mensajeError>&lt;![CDATA[[Número de Transacción: 31825214]. Tipo: AUTENTICACION. Reportar al Sector Seguridad.]]/&gt;</mensajeError>
</DFEError>



Dado que el error parece que te lo está devolviendo la web, tal vez deberías saber primero, qué significa que la web te devuelva el error 01.
¿Tienes documentación?
Tal vez tu código sea correcto, pero los datos no.

gguerrini
12-10-2018, 14:59:47
Hola Muy Buenas, desde ya muchas gracias, por prestarle atención a esta consulta, es muy local de argentina en especial de buenos aires, pero es la tarea que me toca. Les voy a pasar un poco más las especificaciones que manda ARBA.

ENTRADA: La aplicación cliente deberá hacer requerimiento https al servicio

https://dfe.arba.gob.ar/DomicilioElectronico/SeguridadCliente/dfeServicioConsulta.do

enviando un formulario multipart por método POST con los siguientes atributos:

user
password
file(xml con los datos a consultar)
SALIDA: El servicio devuelve las alícuotas y grupos correspondientes a determinado periodo para el CUIT solicitado.
Si ocurre un error en la comunicación o el archivo no puede ser procesado correctamente, se retorna un XML de error con mensaje descriptivo

CONSIDERACIONES
Entrada:
Diseño del archivo de consulta de alícuota (Formato XML)
Nombre del archivo: DFEServicioConsulta + ‘_’ + codigohash.xml
(el código Hash se genera sobre el archivo a enviar, en base al algoritmo MD5)

Formato de archivo de entrada:


<CONSULTA-ALICUOTA>
<fechaDesde> </fechaDesde>
<fechaHasta> </fechaHasta>
<cantidadContribuyentes></cantidadContribuyentes>
<contribuyentes class= “list”>
<contribuyente>
<cuitContribuyente></ cuitContribuyente>
</contribuyente>
</contribuyentes>
</CONSULTA-ALICUOTA>


El código es parecido al que mande antes, pero me di cuenta por el log que grabe que no enviaba el archivo, lo corregí un poquito pero la misma respuesta




procedure Tu_principal.BitBtn1Click(Sender: TObject);
var
FResponse: string;
Str, sURL:String;
DATOS : TidMultiPartFormDataStream;

Archi : TextFile;

begin

idLogFile1.Active := True;

// Crear la estructura de respuesta
FResp := TStringStream.Create('');

// Tratar los parámetros
sURL := Trim(edURL.Text);

DATOS := TidMultiPartFormDataStream.Create;

DATOS.AddFormField('user', edUsuario.Text);
DATOS.AddFormField('password', edPassword.Text);

if chArchivo.Checked then
begin
DATOS.AddFile('file', edFile.Text,'text/xml');
DATOS.AddFormField('file',edFile.Text , 'text/xml');
end;

mDatos.Lines.Clear;
try

Fhttp.Post(sURL , DATOS , FResp);

// Enviar a un archivo el ERROR

if SaveDialog1.Execute then
begin
AssignFile( Archi , savedialog1.FileName);
Rewrite(Archi);
Write(Archi , FResp.DataString);
CloseFile(Archi);
end;


mDatos.Text := FResp.DataString;

except
on E:Exception do begin
MessageDlg(E.Message, mtWarning, [mbOK], 0);
end;
end;

DATOS.Free;
FResp.Free;
Fhttp.Free;

end;






Cuando lo ejecuto me devuelve un error que esta el la tabla de especificaciones, como error inesperado, les dejo el LOG que hace toda la transacción


Stat Connected.
Sent 05/10/2018 09:25:33: POST /DomicilioElectronico/SeguridadCliente/dfeServicio
Consulta.do HTTP/1.0<EOL>Connection: keep-alive<EOL>Content-Type:
multipart/form-data; boundary=--------100518092533050<EOL>Content-Length:
1142<EOL>Host: dfe.arba.gov.ar<EOL>Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8<EOL>User-Agent:
Mozilla/3.0 (compatible; Indy Library)<EOL><EOL>
Sent 05/10/2018 09:25:33: ----------100518092533050<EOL>Content-Disposition:
form-data; name="user"<EOL>Content-Type:
text/plain<EOL>Content-Transfer-Encoding:
quoted-printable<EOL><EOL>%%%%%%%%%%%<EOL>----------100518092533050<EOL>Content-Disposition:
form-data; name="password"<EOL>Content-Type:
text/plain<EOL>Content-Transfer-Encoding:
quoted-printable<EOL><EOL>%%%%%%%%<EOL>----------100518092533050<EOL>Content-Disposition:
form-data; name="file"; filename="DFEServicioConsulta_F62D483C3258EAAE8FF9A375C94E77AC.xml"<EOL>Content-Type:
text/xml; charset="us-ascii"<EOL>Content-Transfer-Encoding:
binary<EOL><EOL><?xml version="1.0" encoding="UTF-8"?><CONSULTA-ALICUOTA><EOL>
<fechaDesde>20181001</fechaDesde><EOL> <fechaHasta>20181031</fechaHasta><EOL>
<cantidadContribuyentes>1</cantidadContribuyentes><EOL> <contribuyentes class="list"><EOL>
<contribuyente><EOL>
<cuitContribuyente>%%%%%%%%%%%</cuitContribuyente><EOL>
</contribuyente><EOL> </contibuyentes><EOL></CONSULTA-ALICUOTA><EOL>----------100518092533050<EOL>Content-Disposition:
form-data; name="file"<EOL>Content-Type:
text/plain; charset="text/xml"<EOL>Content-Transfer-Encoding:
quoted-printable<EOL><EOL>DFEServicioConsulta_F62D483C3258EAAE8FF9A375C94E77AC.xml<EOL>----------100518092533050--<EOL>
Recv 05/10/2018 09:25:34: HTTP/1.0 200 OK<EOL>X-Powered-By:
Servlet/3.0<EOL>Content-Type:
text/xml;charset=ISO-8859-1<EOL>Content-Disposition:
attachment; filename="DFERespuesta.xml"<EOL>Content-Language: en-US<EOL>Set-Cookie:
JSESSIONID=0000gIWrdPjRAWPrCHcObsk2u5u:-1; Path=/; HttpOnly<EOL>Date: Fri, 05 Oct 2018 12:25:33 GMT<EOL>Expires:
Thu, 01 Dec 1994 16:00:00 GMT<EOL>Cache-Control:
no-cache="set-cookie, set-cookie2"<EOL><EOL><?xml version='1.0'
encoding='ISO-8859-1'?><DFEError><LF> <tipoError>ERROR INESPERADO
</tipoError><LF>
<codigoError>01</codigoError><LF>
<mensajeError>&lt;![CDATA[[Número de Transacción: 31863278]. Tipo:
AUTENTICACION. Reportar al Sector Seguridad.]]/&gt;</mensajeError><LF></DFEError>
Stat Disconnected.
Stat Disconnected.
Stat Disconnected.
isconnected.
Stat Disconnected.



Bueno hasta acá llegamos, de acá en mas es solo llanto, jajajaja, desde ya cualquier ayuda será muy bien bienvenida. Muchas Gracias.

cristianorta
02-05-2019, 22:28:16
Me da el mismo error <tipoError>ERROR INESPERADO</tipoError>