Envio de Arquivos XML para NFe

12/02/2015

0

Estou com problema para enviar alguns arquivos XML para a receita federal.
Arquivos de notas pequenas consigo transmitir normalmente, porém assim que um arquivo passa de 100kb, me retorna o erro:
"ESOAPHTTPException with message 'É necessário um certificado para concluir a autenticação do cliente - URL:https://nfe.sefaz.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx - SOAPAction:http://www.portalfiscal.inf.br/nfe/wsdl/NfeAutorizacao'."

Detalhe, editando o arquivo XML que estou enviando, e removendo items para transformar o arquivo em menos de 100kb, o mesmo envia corretamente.
Pelo validador no site da receita, o mesmo valida, e no teste de simulação mostra que aceitaria a nota.

Meu processo de envio é o seguinte:
HTTPReqResp := THTTPReqResp.Create(nil);
HTTPReqResp.UseUTF8InHeader := True;
HTTPReqResp.URL := WSDL;
HTTPReqResp.SoapAction := Action;
HTTPReqResp.ConnectTimeout:=120000;
HTTPReqResp.ReceiveTimeout:=120000;
HTTPReqResp.SendTimeout:=120000;
HTTPReqResp.ClientCertificate.SerialNum := RetornaSerial(fPSi_DFe_002.CertificadoSelecionado.SerialNumber);

MemoriaStream := TMemoryStream.Create;

HTTPReqResp.Execute(XML, MemoriaStream);


Procurando mais a fundo, e olhando o Soap.SOAPHTTPTrans.pas
que é o .pas que controla os componentes THTTPReqResp
meu erro acontece dentro da função:
function THTTPReqResp.Send(const ASrc: TStream): Integer;
na linha:
Check(not HttpSendRequestEx(Request, @INBuffer, nil,
0(*HSR_INITIATE or HSR_SYNC*), 0));


Favor qualquer dica ou ideia é de grande ajuda.
Thairony Holz

Thairony Holz

Responder

Post mais votado

14/02/2015

Olá Thairony Holz, tudo bem?
Procure informar-se sobre o tamanho do arquivo a ser enviado, pois pode ser que você precise instalar um certificado para envio de arquivos com mais de 100kb. Um outro teste que você pode fazer, é indo no próprio site da receita e tentar enviar um arquivo com mais de 100kb.

Douglas

Douglas
Responder

Mais Posts

14/02/2015

Thairony Holz

Olá Douglas,
Obrigado pela ajuda, mas ontem mesmo consegui.

O tamanho máximo que pode ser usado na receita é 500kb, e na validação pelo site dava certo.

O meu problema estava em 2 pontos.
A Criação do componente não pode ser feita com "nil", pois dessa forma ele não consegue configurar toda questão de certificados.

No fim, as alterações necessárias para funcionar foram:

HTTPReqResp := THTTPReqResp.Create(fPSi_DFe_001);
HTTPReqResp.MaxSinglePostSize := 1000000;

E transformar todas minhas variaveis que continham o arquivo XML, de String para WideString.

Mas obrigado pela ajuda.
Responder

14/02/2015

Douglas

Show de bola Thairony Holz!
Responder

27/03/2015

Fabio Ferreira..

Caro Thairony Holz

fPSi_DFe_001

O que seria essa constante ? Para que serve ? Qual unit deve ser informada pois o delphi nao a reconhece.

Grato,

Fabio
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar