Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 146 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores
Postado

Olá pessoal!

A equipe de consultores do ACBr está sempre buscando melhorar os componentes e as soluções com o objetivo de facilitar e auxiliar o dia a dia do desenvolvedor.

Por isso, gostaríamos de anunciar que houve um refactogin na classe TACBrHTTP que fica na unit ACBrSocket!

A alteração foi enviada ao SVN na Revision-34143, onde as melhorias foram incluídas junto do seguinte Log:

Quote

[+] Inclusão das propriedades URLQueryParams e URLPathParams para facilitar a utilização de 
    parâmetros de Path e Query;
[+] Inclusão da propriedade ContentsEncodingCompress para possibilitar a inclusão dos tipos de 
    compactação aceitos.

Esmiuçando as mudanças...

Na unit ACBrSocket foram adicionadas algumas constantes utilizadas em validações internas e que também podem ser aproveitadas caso a unit seja declarada na seção uses. Alguns exemplos incluem:

cHTTPTimeOutDef = 90000;
cHTTPMethodGET = 'GET';
cHTTPMethodPOST = 'POST';
//...
cHTTPProtocols: array[0..2] of string = ('http','https', 'ftp');
//...
HTTP_CONTINUE                     = 100;
HTTP_SWITCHING_PROTOCOLS          = 101;
HTTP_PROCESSING                   = 102;
HTTP_OK                           = 200;
//...

A unit ACBrSocket foi adicionada a classe TACBrHTTPQueryParams que deriva de TStringList e conta com o parâmetro AsURL.

TACBrHTTPQueryParams = class(TStringList)
private
  function GetAsURL: String;
  procedure SetAsURL(const aValue: String);
public
  property AsURL: String read GetAsURL write SetAsURL;
end;

A classe TACBrHTTP ganhou as propriedades URLPathParams do tipo TStringList, URLQueryParams do tipo TACBrHTTPQueryParams, HTTPResponse e HTTPResultCode (essas duas últimas substituindo a propriedade RespHTTP).

Também foram adicionadas propriedades para permitir capturar Log. São elas ArqLOG do tipo string, NivelLog do tipo Byte e o evento OnQuandroGravarLog.

A propriedade IsUTF8 que permitia escrita e leitura foi alterada pela propriedade RespIsUTF8 de apenas leitura.

TACBrHTTP = class(TACBrComponent)
private
  //...
  fArqLOG: String;
  fHTTPResultCode: Integer;
  fNivelLog: Byte;
  fHTTPResponse: AnsiString;
  fURLPathParams: TStringList;
  fOnQuandoGravarLog: TACBrGravarLog;
  fURLQueryParams: TACBrHTTPQueryParams;
  fContenstEncodingCompress: THttpContentsEncodingCompress;
protected
  //...
  procedure RegistrarLog(const aLinha: String);
public
  //...
  procedure LimparHTTP;
  property HTTPResponse: AnsiString read fHTTPResponse;
  property HTTPResultCode: Integer read fHTTPResultCode;
  property URLPathParams: TStringList read fURLPathParams;
  property URLQueryParams: TACBrHTTPQueryParams read fURLQueryParams;
published
  //...
  property RespIsUTF8: Boolean read GetRespIsUTF8;
  property ContentsEncodingCompress: THttpContentsEncodingCompress read fContenstEncodingCompress write fContenstEncodingCompress;              
  property ArqLOG: String read fArqLOG write fArqLOG;
  property NivelLog: Byte read fNivelLog write fNivelLog default 1;
  property OnQuandoGravarLog: TACBrGravarLog read fOnQuandoGravarLog write fOnQuandoGravarLog;   
end;

Por que saber disso é importante?

A classe TACBrHTTP é utilizada como base para conexão com web services por muitos componentes.

Tanto que as units ACBrPicPay, ACBrCEP, ACBrConsultaCPF, ACBrCotacao, ACBrFeriado, ACBrFrenet, ACBrIBGE, ACBrIBPTax, ACBrNCMs, ACBrNFPw, ACBrSedex, ACBrSPEDTabelas, ACBrSuframa e ACBrTaxDolar foram compatibilizadas com as alterações no mesmo commit.

Esperamos que o refactoring traga impactos positivos a todos os membros da comunidade e contamos com a colaboração de todos com relatos de problemas e sugestões de melhorias.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.