mjtamanhoni Postado 31 Maio Compartilhar Postado 31 Maio Bom dia a todos. Tenho um serviço de Windows que executa determinadas funções em horários específicos. Um desses serviços e a Distribuição DFe por último NSU que funciona perfeitamente dentro de uma TThread (rotina retirada de curso do ACBr). O problema é que eu implementei a Manifestação (Ciência, Confirmação...) no serviço também, respondendo a um Método externo onde é passado um JSon via verbo POST contendo (Lote, Chaves, CNPJ e o tipo de evento de cada chave), mas o sistema trava no momento em que o evento é enviado (ACBrNFe1.EnviarEvento(FLote)), ate dar tempo limite esgotado no Metodo. E se eu chamo o evento via Postman fica o dia todo esperando a resposta. JSon do Método: [ { "lote": 1, "chaves": [ { "id": 1, "chNfe": "32240433009911001704550260013106541768710493", "cnpj": "33009911001701", "tpEvento": "ciencia", "dtEvento": "" }, { "id": 2, "chNfe": "32240433009911001704550260013106541768710494", "cnpj": "27151620000182", "tpEvento": "confirma", "dtEvento": "" } ] } ] Código delphi: if Assigned(FChave_JSon) then begin ACBrNFe1.EventoNFe.Evento.Clear; for J := 0 to (FChave_JSon.Size - 1) do begin FChNFe := FChave_JSon[J].GetValue<String>('chnfe',''); FCnpj := FChave_JSon[J].GetValue<String>('cnpj',''); FTpEvento := FChave_JSon[J].GetValue<String>('tpevento',''); fDtEvento := FChave_JSon[J].GetValue<String>('dtevento',''); SalvarLog(FChNFe + ' - ' + FCnpj + ' - ' + FTpEvento + ' - ' + fDtEvento,1,FEnderLog); {$Region 'Adicionando as chaves ao lote'} with ACBrNFe1.EventoNFe.Evento.New do begin InfEvento.cOrgao := 91; InfEvento.chNFe := FChNFe; InfEvento.CNPJ := FCnpj; InfEvento.dhEvento := Now; if FTpEvento = 'ciencia' then InfEvento.tpEvento := teManifDestCiencia else if FTpEvento = 'confirma' then InfEvento.tpEvento := teManifDestConfirmacao else if FTpEvento = 'desconhece' then InfEvento.tpEvento := teManifDestDesconhecimento else if FTpEvento = 'nrealizada' then begin InfEvento.tpEvento := teManifDestOperNaoRealizada; InfEvento.detEvento.xJust := fDtEvento; end; end; {$EndRegion 'Adicionando as chaves ao lote'} end; ACBrNFe1.EnviarEvento(FLote); with ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento do begin SalvarLog('cStat ' + cStat.ToString,1,FEnderLog); if cStat = 135 then Codigo := 200 else Codigo := 500; Mensagem := Mensagem + '['; Mensagem := Mensagem + '{'; Mensagem := Mensagem + '"cStat":'+cStat.ToString+','; Mensagem := Mensagem + '"retorno": ['; Mensagem := Mensagem + '{'; Mensagem := Mensagem + '"id":"'+Id+'",'; Mensagem := Mensagem + '"tpAmb":"'+TpAmbToStr(tpAmb)+'",'; Mensagem := Mensagem + '"verAplic":"'+verAplic+'",'; Mensagem := Mensagem + '"cOrgao":"'+IntToStr(cOrgao)+'",'; Mensagem := Mensagem + '"cStat":"'+IntToStr(cStat)+'",'; Mensagem := Mensagem + '"xMotivo":"'+xMotivo+'",'; Mensagem := Mensagem + '"chNFe":"'+chNFe+'",'; Mensagem := Mensagem + '"tpEvento":"'+TpEventoToStr(tpEvento) +'",'; Mensagem := Mensagem + '"xEvento":"'+xEvento+'",'; Mensagem := Mensagem + '"nSeqEvento":"'+IntToStr(nSeqEvento)+'",'; Mensagem := Mensagem + '"CNPJDest":"'+CNPJDest+'",'; Mensagem := Mensagem + '"emailDest":"'+emailDest+'",'; Mensagem := Mensagem + '"dhRegEvento":"'+DateTimeToStr(dhRegEvento)+'",'; Mensagem := Mensagem + '"nProt":"'+nProt+'"'; Mensagem := Mensagem + '}'; Mensagem := Mensagem + ']'; Mensagem := Mensagem + '}'; Mensagem := Mensagem + ']'; SalvarLog(Mensagem,1,FEnderLog); end; end else begin raise Exception.Create('JSon com as chaves não informadas'); end; Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 31 Maio Moderadores Compartilhar Postado 31 Maio se pegar o mesmo codigo e colocar em uma aplicação desktop ele vai funcionar? 2 Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Antonio Carlos L Postado 1 Junho Compartilhar Postado 1 Junho Talvez falte mais um try except quando da consulta onde um timeout faça sair. Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora