Bom tenho o seguinte código abaixo para comnuicar com o ACBr Monitor, porém não consigo passar comandos pelo “writeToReadFromSocket(“bla, bla, blá”)”, alguém que já tenha utilizado o “ACBr”, poderia me ajudar ??? vlw agradeço a todos… =)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package acbrmonitor;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStreport java.io.DataOutputStrea.io.DataInputStream;
import java.io.DataOutputStreeption;
import java.io.InputStreamReader;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Fred
*/
public class ACBrMonitorClient {
private Socket acbr;
private PrintWriter enviaComando = null;
private BufferedReader recebeComando = null;
private String finalResposta = "\u0003";
public ACBrMonitorClient(String host, int port) {
try {
InetAddress hostName = InetAddress.getByName(host);
acbr = new Socket(hostName, port);
enviaComando = new PrintWriter(acbr.getOutputStream());
recebeComando = new BufferedReader(new InputStreamReader(acbr.getInputStream()));
try {
Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(ACBrMonitorClient.class.getName()).log(Level.SEVERE, null, ex);
}
//loop para limpar o cabeçalho da conexao com o acbr
short byteLido = -1;
String leitura = "";
while (byteLido != 3) {
byteLido = (short) recebeComando.read();
if (byteLido != 3) {
leitura += (char) byteLido;
}
}
System.out.println("Leitura: " + leitura);
} catch (UnknownHostException ex) {
System.out.println("Host Desconhecido: " + ex.getMessage());
} catch (IOException ex) {
System.out.println("Erro: " + ex.getMessage());
}
}
public String writeToReadFromSocket(String writeTo) throws Exception {
String comando = toUpper(writeTo);
enviaComando.println(comando);
enviaComando.flush();
if ("BYE".equals(comando)) {
enviaComando.close();
recebeComando.close();
acbr.close();
return "FIM";
}
//faz a leitura do retorno do acbr
short b = -1;
String retorno = "";
while (b != 3) {
b = (short) recebeComando.read();
if (b != 3) {
retorno += (char) b;
}
}
return retorno;
}
private String toUpper(String upper) {
StringBuffer retorno = new StringBuffer();
for (char i : upper.toCharArray()) {
retorno.append(Character.toUpperCase(i));
}
return retorno.toString();
}
}
Bem amigo, primeiramente faça um teste no DOS da tua maquina.
Abra um telnet ou ftp, e conecte no teu ACBR.
Exemplo: ftp open localhost 3436
e depois tente enviar um comando qualquer…
NFe.Ativo();
Se tudo ocorrer certo, vai ter uma resposta no DOS.
Caso contrário ACBr mal configurado.
Ps.: Poste os resultados
[quote=TheKill]Bem amigo, primeiramente faça um teste no DOS da tua maquina.
Abra um telnet ou ftp, e conecte no teu ACBR.
Exemplo: ftp open localhost 3436
e depois tente enviar um comando qualquer…
NFe.Ativo();
Se tudo ocorrer certo, vai ter uma resposta no DOS.
Caso contrário ACBr mal configurado.
Ps.: Poste os resultados[/quote]
tentei pelo telnet e apareceu o seguinte:
ACBrNFeMonitor2 Ver. 0.6.2a - CAPICOM
Conectado em: 03/05/11 10:17:15
Mßquina: 127.0.0.1
Esperando por comandos.
Nfe.Ativo
.
ERRO: Objeto invßlido: NFE
Permitidos: “NFE”
Nfe.Ativo
.
ERRO: Objeto invßlidoNFEF
Permitidos: “NFE”
Nfe.Ativo();
.
ERRO: Objeto invßlido: NFE
Permitidos: “NFE”
Nfe.Ativo();
======================
Pode ate não está totalmente configurando, porém o que eu acho estranho é porque quando eu solicito um comando pelo java, ele nem mesmo retorno o erro…igual pelo telnet…simplesmente não responde…tipo trava entende ???
Bem a resposta, da sua pergunta está bem na frente dos olhos rsrs…
Falha de comunicação entre seu codigo e o ACBr…
De uma olhada veja se esta fazendo corretamente…
Da uma pesquisada sobre telnet e sockets, não posso postar código porque é empresarial, não tenho direitos sobre códigos
[quote=TheKill]Digite assim:
NFE.STATUSSERVICO .[/quote]
opa …jah tinha ate tentando …segue abaixo:
obs: agora estou sem o certificado…tentei ontem e respondeu numa boa… mas no java não aparece nem a resposta de erro… =´(
ACBrNFeMonitor2 Ver. 0.6.2a - CAPICOM
Conectado em: 03/05/11 10:21:23
Mßquina: 127.0.0.1
Esperando por comandos.
NFe.StatusServico
.
ERRO: WebService Consulta Status serviþo:
- Inativo ou Inoperante tente novamente.
- N·mero de SÚrie do Certificado Digital nÒo especificado !
NFE.STATUSSERVICO
.
ERRO: WebService Consulta Status serviþo:
- Inativo ou Inoperante tente novamente.
- N·mero de SÚrie do Certificado Digital nÒo especificado !
[quote=TheKill]Bem a resposta, da sua pergunta está bem na frente dos olhos rsrs…
Falha de comunicação entre seu codigo e o ACBr…
De uma olhada veja se esta fazendo corretamente…
Da uma pesquisada sobre telnet e sockets, não posso postar código porque é empresarial, não tenho direitos sobre códigos[/quote]
Pesquise sobre Sockets, é problema no seu trecho de codigo de comunicação com o ACBr…
tipo estou passando o camando assim: “writeToReadFromSocket(“NFe.StatusServico”);” está certo ???
Sim. mas oque da erro é que voce nao esta
consegunido se conectar. então esta enviando comando para o ‘espaço’
[quote=TheKill]Sim. mas oque da erro é que voce nao esta
consegunido se conectar. então esta enviando comando para o ‘espaço’[/quote]
Estranho…pq crei para testar um botão “conectar” e outro “enviar comando”…
quando clico conectar funciona numa boa: veja a resposta do java
run:
Leitura: ACBrNFeMonitor2 Ver. 0.6.2a - CAPICOM
Conectado em: 03/05/11 10:32:40
Máquina: 127.0.0.1
Esperando por comandos.
Porém qunado clico “enviar comandos” o java trava… cara acho q eh no comando mesmo…não tem condição…já tentei de tudo aqui…tah complicado isso viu…
Mas é algo no seu trecho de codigo…
Sempre usei aqui e nunca tive problemas
[quote=TheKill]Mas é algo no seu trecho de codigo…
Sempre usei aqui e nunca tive problemas[/quote]
poxa olhando para o código acima, você não tem nenhuma ideia do que possa ser ???
pq tipo jah tentei mudar varias coisas e não consigo do mesmo jeito… sempre trava
tem nenhuma luz ai não rss
String comando = toUpper(writeTo);
enviaComando.println(comando);
Deixe assim
enviaComando.print(comando + '\r' + '\n' + "." + '\r' + '\n');
[quote=TheKill]
String comando = toUpper(writeTo);
enviaComando.println(comando);
Deixe assim
enviaComando.print(comando + '\r' + '\n' + "." + '\r' + '\n');
cara eu te amo auhauhau …vlw mesmo pela ajuda… era isso mesmo …obrigado vlw =)
se minha namorada ve isso, ela te mata!
ahahahaha…
tranquilo ferinha… é soh prestar atenção…
NFE.STATUSSERVICO .
Veja os .