Envio de Arquivos XML para NFe

Delphi

Automação Comercial

12/02/2015

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

Curtidas 0

Melhor post

Douglas

Douglas

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.
GOSTEI 1

Mais Respostas

Thairony Holz

Thairony Holz

12/02/2015

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.
GOSTEI 0
Douglas

Douglas

12/02/2015

Show de bola Thairony Holz!
GOSTEI 0
Fabio Ferreira..

Fabio Ferreira..

12/02/2015

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
GOSTEI 0
POSTAR