Ir para conteúdo
  • Cadastre-se

dev botao

Pegar retorno NFE via socket.


Ver Solução Respondido por Celso Marigo Junior,
  • Este tópico foi criado há 2767 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde.

Estou  desenvolvendo a NFE por tcp/ip, pois desenvolvo em Java. Ja criei o Arquivo .INI e envio o comando via tcp para criar e enviar a nfe, visualizando a DANFE.

Gostaria de pegar o retorno que ele faz via tcp para guardar em banco de dados  chave da nfe e o nome do arquivo que ele gera para a nfe.

Reparei que ele gera esse retorno no ACBR monitor Plus igual a um arquivo .Ini, mas em tela. como ler esse Arquivo? ele fica salvo em alguma pasta para que eu possa fazer a leitura dele?

desde já agradeço.

Abraço

 

Rogério Furlan

Link para o comentário
Compartilhar em outros sites

Na verdade o retorno vem pelo canal de comunicação do socket que você usou para enviar o comando. Você precisa ler a resposta nele.

Veja na pasta de exemplos no diretório do ACBrMonitorPLUS existem um exemplo usando Socket em Java (JavaNIOSocketExample.java)

Consultor SAC ACBr

Celso Marigo Junior

Conheça o Portal do Projeto ACBr
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

 

Link para o comentário
Compartilhar em outros sites

 String comando = "NFE.CriarEnviarNfe('" + builder + "',1,1,1)";

                String resultado = "";
                String Retorno = "";
                java.net.Socket TelnetACBr = null;
                java.io.PrintStream out = null;
                java.io.BufferedReader in = null;
                String Leitura = "";
                String ETX = "\u0003";
                short b = -1;

                String OK = "N";
                // cria o socket
                try {
                    TelnetACBr = new java.net.Socket("192.168.43.5", 3434);
                    out = new java.io.PrintStream(TelnetACBr.getOutputStream(), true);
                    in = new java.io.BufferedReader(new java.io.InputStreamReader(TelnetACBr.getInputStream()));
                    OK = "S";
                } catch (java.net.UnknownHostException e) {
                    Retorno = "Erro: Host desconhecido! Verifique as configurações de rede: " + "\n\n" + e.getMessage();
                } catch (java.io.IOException e) {
                    Retorno = "Erro: Falha de comunicação com o ACBrMonitor, contate o suporte técnico: " + "\n\n" + e.getMessage();
                } catch (Exception e) {
                    Retorno = "Erro: tentando conectar com o ACBrMonitor. Contate o suporte técnico: " + "\n\n" + e.getMessage();
                }
                if (OK == "S") {
                    // envia o comando e busca o retorno
                    try {
                        out.println(comando + '\r' + '\n' + "." + '\r' + '\n');
                        out.flush();

                        Leitura = "";
                        while (b != 3) {
                            b = (short) in.read();
                            if (b != 3) {
                                Leitura += (char) (b);
                            }
                        }
                        Retorno = Leitura;

                        resultado = in.readLine();

                        in.close();
                        out.close();
                        TelnetACBr.close();

                    } catch (Exception e) {
                        Retorno = "Erro: Falha ao ler o retorno do ACBrMonitor. Contate o suporte técnico: " + "\n\n" + e.getMessage();
                    }
                }

            }
        }

Celso segue parte do codigo, onde envio a nfe.  tentei pegar o retorno pelo in.readLine() mas não obtive resultado.

Obrigado pela força.

Link para o comentário
Compartilhar em outros sites

  • Solution

@Rogerio Luna Furlan o exemplo que você usou como base é o antigo. Fiz algumas alterações no exemplo mais novo, e já subi no SVN, estou anexando aqui para ficar mais facil.

O problema neste exemplo aqui é que o aplicativo java estava tentando ler a resposta antes de o monitor gerar a resposta completa. Para garantir que ele leia a resposta completa, é necessário verificar o caracter 3, que indica final da resposta.

Portanto este exemplo está funcional, fiz varios testes com comandos que retornam respostas bem longas, e tudo funcionou corretamente.

 

JavaNIOSocketExample.java

Consultor SAC ACBr

Celso Marigo Junior

Conheça o Portal do Projeto ACBr
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

 

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...