Jump to content

Nova Loja Oficial
loja.projetoacbr.com.br
Ajude o projeto a crescer, com estilo

Comprar

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Rafael Vivan

Envio do arquivo .zip em base64 DRCST

Recommended Posts

Bom dia!

Pessoal estou com dificuldades para enviar o arquivo DRCST.

Envio via REST.

Toda tentativa de envio, ocorre a rejeição:

{
  "ResultCode": "Error",
  "Data": null,
  "Messages": [
    {
      "Message": "Conteúdo binário do arquivo ZIP é nulo.",
      "Type": "Error"
    }
  ]
}

Alguém tem alguma ideia de como resolver?

Em anexo o arquivo do SEF SC indicando como deve ser feito.

Código:

procedure TFValidador.ValidaArquivo;
var
   Ret: TStringStream;
   Zip: TMemoryStream;
   Zip2 : TStrings;
   AZip, Compactado: AnsiString;
   DRCST : String;
begin
   DRCST := 'DRCST';
   Ret := TStringStream.Create('');
   Zip := TMemoryStream.Create;
   try
      try
         idHttp.Request.Clear;
         idHttp.Request.ContentType := 'application/json';
         idhttp.Request.Charset := 'utf-8';
         idHttp.Response.ResponseText := 'utf-8';
         idHttp.BoundPortMax := 5000;
         idHttp.Request.Connection  := 'keep-alive';
         idHttp.Request.UserAgent   := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36';
         idHttp.Request.CacheControl := 'no-cache';
         idHttp.Request.Accept:= 'text/xml';
         IdHttp.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
         Zip.LoadFromFile(EdtCaminho.Text); /////caminho do arquivo .zip
         EncodeStream(Zip, Zip);
         IdHTTP.Post('https://tributario.sef.sc.gov.br/api/drcSt/arquivo/ValidarEstrutura', Zip, Ret);
         Memo2.Text := Ret.DataString;
       except
        on E: Exception do
          Memo2.Text:= ('Erro encontrado: ' + E.Message);
       end;
   finally
      Zip.Free;
      Ret.Free;
   end;

end;

 

Ambiente validação.docx

Share this post


Link to post
Share on other sites

Tente usar a função ReadStrFromStream da unit synautil e a função EncodeBase64 da synacode. Ex.:

FPDadosMsg := EncodeBase64(ReadStrFromStream(Zip));

 

  • Like 3

Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

ACBrFramework Desenvolvedor ACBrFramework.

 

Share this post


Link to post
Share on other sites
16 horas atrás, Rafael Dias disse:

Tente usar a função ReadStrFromStream da unit synautil e a função EncodeBase64 da synacode. Ex.:

FPDadosMsg := EncodeBase64(ReadStrFromStream(Zip));

 

Bom dia.

Mesmo assim não consegui fazer funcionar.

Alguma outra dica?

O arquivo zip precisa ser enviado em base64.

var
   Ret: TStringStream;
   Zip: TMemoryStream;
   Zip2 : TStrings;
   AZip, Compactado: AnsiString;
   DRCST : String;
begin
   DRCST := 'DRCST';
   Ret := TStringStream.Create('');
   Zip := TMemoryStream.Create;
   try
      try
         idHttp.Request.Clear;
         idHttp.Request.ContentType := 'application/json';
         idhttp.Request.Charset := 'utf-8';
         idHttp.Response.ResponseText := 'utf-8';
         idHttp.BoundPortMax := 5000;
         idHttp.Request.Connection  := 'keep-alive';
         idHttp.Request.UserAgent   := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36';
         idHttp.Request.CacheControl := 'no-cache';
         idHttp.Request.Accept:= 'text/xml';
         IdHttp.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
         Zip.LoadFromFile(EdtCaminho.Text); /////caminho do arquivo .zip
         Azip := EncodeBase64(ReadStrFromStream(Zip, Zip.Size));
         IdHTTP.Post('https://tributario.sef.sc.gov.br/api/drcSt/arquivo/ValidarEstrutura', Azip, Ret);
         Memo2.Text := Ret.DataString;
       except
        on E: Exception do
          Memo2.Text:= ('Erro encontrado: ' + E.Message);
       end;
   finally
      Zip.Free;
      Ret.Free;
   end;

end;

Share this post


Link to post
Share on other sites

Olha então seu problema é outro pois, usamos estas funções para enviar as NFe zipada e em Base64 e funciona corretamente.

  • Like 1

Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

ACBrFramework Desenvolvedor ACBrFramework.

 

Share this post


Link to post
Share on other sites
1 hora atrás, Rafael Dias disse:

Olha então seu problema é outro pois, usamos estas funções para enviar as NFe zipada e em Base64 e funciona corretamente.

 

Bom dia.
blz, este seu exemplo:
FPDadosMsg seria em qual formato a variável?  

As informações que tenho são essas:

  • A troca de mensagens entre o aplicativo cliente e o Web Service do SAT será realizada utilizando Representational State Transfer (REST), sobre o protocolo HTTP (usando os verbos, accept headers, códigos de estado HTTP, Content-Type) definidos na especificação do mesmo.

  • O formato para o intercâmbio das informações dentro das mensagens será JSON (JavaScript Object Notation).

Onde está disponível?

 

O Web Service de validação do arquivo DRCST está disponível no endereço:

https://tributario.sef.sc.gov.br/api/drcSt/arquivo/ValidarEstrutura

 

 

 

Share this post


Link to post
Share on other sites

Você compactou com no formato ZIP (Zip File)?

Geralmente WebServices esperam receber arquivos no formato GZIP...

Tente os métodos de compactação que estão disponíveis na ACBrUtil.pas

function UnZip(S: TStream): AnsiString; overload;
function UnZip(const ABinaryString: AnsiString): AnsiString; overload;
function Zip(AStream: TStream): AnsiString; overload;
function Zip(const ABinaryString: AnsiString): AnsiString; overload;

 

 


Consultor SAC ACBr

Daniel Simões de Almeida
Ajude o Projeto ACBr crescer - Assine o SAC

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

Share this post


Link to post
Share on other sites
Em 30/04/2019 at 19:01, Daniel Simoes disse:

Você compactou com no formato ZIP (Zip File)?

Geralmente WebServices esperam receber arquivos no formato GZIP...

Tente os métodos de compactação que estão disponíveis na ACBrUtil.pas

function UnZip(S: TStream): AnsiString; overload;
function UnZip(const ABinaryString: AnsiString): AnsiString; overload;
function Zip(AStream: TStream): AnsiString; overload;
function Zip(const ABinaryString: AnsiString): AnsiString; overload;

 

 

Boa tarde, testei com essas e também com outras encontradas na internet.

Vou entrar em contato com eles da Secretaria, e conferir o que pode ser.

  • Like 1

Share this post


Link to post
Share on other sites

Boa Tarde, Amigo tive o mesmo problema no seu arquivo base64 vc tem que colocar as aspas no inicio e fim do arquivo que resolve.    
Tente Enviar esse arquivo embaixo usando as aspas dupla no inicio e fim do arquivo = 

 

 


se mandar sem as aspas da essa mensagem de erro:

{ "ResultCode": "Error", "Data": null, "Messages": [ { "Message": "Conteúdo binário do arquivo ZIP é nulo.", "Type": "Error" } ] }

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Boa tarde!

Amigo tu não faz ideia como me ajudou, estava a dias tentando, só tenho a agradecer, valeu mesmo pela dica!

Forte abraço.

  • Like 1

Share this post


Link to post
Share on other sites

Boa tarde pessoal,

Tenho uma dica importante para vocês a fim de evitar replicar postagens que já estão bem longas.
Utilizem o @Nome_do_ Usuário para citar os mesmos, assim facilita a leitura do tópico.

Att.

  • Like 1

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...