Hola a todos.
Antes que nada pido disculpas si cometo algún error ya que es mi primer mensaje en este foro.
Necesito vuestra ayuda porque estoy bloqueado.
Estoy intentando enviar a Bizcaia un fichero LROE 240 y para ello estoy utilizando Delphi 10.3 Rio y los componentes Indy HTTP y TIdSSLIOHandlerSocketOpenSSL.
El fichero que estoy enviando es un gzip que contiene el xml según la documentación.
El código que estoy usando es el siguiente:
Código:
Código Delphi
[-] AHttp := TIdHTTP.Create(nil);
IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
try
IdSSLIOHandlerSocketOpenSSL.SSLOptions.SSLVersions := [sslvTLSv1_2];
IdSSLIOHandlerSocketOpenSSL.SSLOptions.CertFile := FBaiConfiguration.restServer.certificateFile;
IdSSLIOHandlerSocketOpenSSL.SSLOptions.KeyFile := FBaiConfiguration.restServer.certificateFile;
IdSSLIOHandlerSocketOpenSSL.OnGetPassword := GetPasswordEvent;
AHttp.IOHandler := IdSSLIOHandlerSocketOpenSSL;
AHttp.ConnectTimeout := 5000;
AHttp.Request.CustomHeaders.Clear;
AHttp.Request.CustomHeaders.AddValue('Accept-Encoding', 'gzip');
AHttp.Request.CustomHeaders.AddValue('Content-Encoding', 'gzip');
AHttp.Request.CustomHeaders.AddValue('Content-Type', 'octet-stream');
AHttp.Request.CustomHeaders.AddValue('Content-Length', IntToStr(RecoverFileSize(TPath.Combine(FWorkFilePath, Format('LROE_240_1_1_%s.gz',[documentData.document_sid])))));
AHttp.Request.CustomHeaders.AddValue('eus-bizkaia-n3-version', '1.0');
AHttp.Request.CustomHeaders.AddValue('eus-bizkaia-n3-content-type', 'application/xml');
AHttp.Request.CustomHeaders.AddValue('eus-bizkaia-n3-data', ComposeJSONBizcaiaData);
Try
requestBody := TFileStream.Create(TPath.Combine(FWorkFilePath, Format('LROE_240_1_1_%s.gz',[documentData.document_sid])), fmOpenRead);
try
try
responseBody := AHttp.Post(FBaiConfiguration.restServer.urlInsertDocument, requestBody);
if AHttp.ResponseCode = 200 then
Begin
Result := True;
End;
except
on e: EIdHTTPProtocolException do
begin
Result := False;
errorMessage := 'Error: Uploading document failed. ' + IntToStr(AHttp.ResponseCode) + ' - ' + AHttp.response.ResponseText;
end;
end;
finally
requestBody.Free;
end;
Except
on e: EIdHTTPProtocolException do
begin
Result := False;
errorMessage := 'Error: Uploading document failed. ' + IntToStr(AHttp.ResponseCode) + ' - ' + AHttp.response.ResponseText;
end;
End;
except
on E: Exception do
begin
Result := False;
errorMessage := 'Error: Uploading document TicketBAI failed.';
end;
end;
finally
FreeAndNil(AHttp);
FreeAndNil(IdSSLIOHandlerSocketOpenSSL);
end;
Me devuelve siempre error 400 - Bad request
Las cabeceras que le paso creo que están bien. Las vuelco a un fichero para ver que envío y muestra lo siguiente:
Accept-Encoding: gzip
Content-Encoding: gzip
Content-Type: octet-stream
Content-Length: 8532
eus-bizkaia-n3-version: 1.0
eus-bizkaia-n3-content-type: application/xml
eus-bizkaia-n3-data: {"con":"LROE","apa":"1.1","inte":{"nif":"A99800005","nrs":"SOFTWARE GARANTE TICKETBAI PRUEBA"},"drs":{"mode":"240","ejer":"2025"}}
Alguien me puede explicar donde está el problema o algún trozo de código que me pueda ayudar.
Muchas gracias a todos.