Bom dia a todos,
Estava com esse problema ontem e verificando o componente vi o seguinte
Quando o servidor está fora do ar é retornada uma mensagem informando a situação, porém o componente não está tratando esse retorno e está disparando um exception, vejam a função abaixo.
function TDFeHttpOpenSSL.Enviar(const ConteudoXML: String; const AURL: String;
const ASoapAction: String; AMimeType: String): String;
var
OK: Boolean;
begin
Result := '';
// Configurando o THTTPSend //
ConfigurarHTTP(AURL, ASoapAction, AMimeType);
// Gravando no Buffer de Envio //
WriteStrToStream(FHTTP.Document, AnsiString(ConteudoXML)) ;
// DEBUG //
//FHTTP.Document.SaveToFile( 'c:\temp\HttpSendDocument.xml' );
//FHTTP.Headers.SaveToFile( 'c:\temp\HttpSendHeader.xml' );
// Transmitindo //
OK := FHTTP.HTTPMethod('POST', AURL);
// Lendo a resposta //
if OK then
begin
// DEBUG //
//HTTP.Document.SaveToFile('c:\temp\ReqResp.xml');
FHTTP.Document.Position := 0;
Result := String( ReadStrFromStream(FHTTP.Document, FHTTP.Document.Size) ); >>>>> aqui chega o retorno informando que o servidor está fora do ar
end;
// Verifica se o ResultCode é: 200 OK; 201 Created; 202 Accepted
// https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
OK := (OK and (FHTTP.ResultCode in [200, 201, 202])); >>>> mas aqui gera um exception e não informa o retorno
if not OK then
raise EACBrDFeException.CreateFmt( cACBrDFeSSLEnviarException,
[InternalErrorCode, HTTPResultCode] );
end;