segundo o manual de integração sua mensagem de status nao pode ser superior a 500 kb
Eu usei o codigo abaixo, mas me retorna o erro 214 - como se eu tive excedido o tamanho…
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=“2.00"”
+ " xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">"
+ “<tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>”;
// XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(nfeDadosMsg));
ByteArrayInputStream baisDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader(baisDados);
System.out.println("Teste ");
NfeDadosMsg dadosMsg = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(dad);
System.out.println("Teste1 ");
NfeStatusServico2Stub.NfeCabecMsg cabecMsg = new NfeStatusServico2Stub.NfeCabecMsg();
cabecMsg.setCUF("35");
cabecMsg.setVersaoDados("2.00");
System.out.println("Teste2 ");
NfeCabecMsg0 cabecMsgE = new NfeCabecMsg0();
cabecMsgE.setNfeCabecMsg(cabecMsg);
System.out.println("Teste3 ");
NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
System.out.println("Teste4 ");
System.setProperty("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore",
"C:/Certificado Digital/Certificadopfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore",
"C:/Certificado Digital/nfe1.jks");
System.out.println(stub.nfeStatusServicoNF2(dadosMsg, cabecMsgE)
.getExtraElement());
System.out.println("Teste5");
}
Alguem poderia me ajudar…
O unico erro que achei no seu código foi onde você escreveu
NfeCabecMsg0 cabecMsgE = new NfeCabecMsg0();
e deveria ser
NfeCabecMsgE cabecMsgE = new NfeCabecMsgE();
a variável nfeDadosMsg não esta recebendo nada antes dessa rotina? talvez por isso exceda o tamanho.
Eu faço assim com o código
[code] nfeDadosMsg = “<?xml version=\"1.0\" encoding=\"UTF-8\"?>”
+ “”
+ "<consStatServ " + " versao=“2.00"”
+ " xmlns="http://www.portalfiscal.inf.br/nfe">"
+ “” + strTipoAmbiente + “”
+ “” + strUF + “” + “STATUS”
+ “”
+ “”; //Necessario colocar a tag ‘dummy’ para enganar o XMLReader.
try
{
NfeCabecMsg nfeCabec = new NfeCabecMsg();
nfeCabec.setCUF(strUF);
nfeCabec.setVersaoDados(“2.00”);
NfeCabecMsgE nfeCabecE = new NfeStatusServico2Stub.NfeCabecMsgE();
nfeCabecE.setNfeCabecMsg(nfeCabec);
NfeDadosMsg nfeDados = new NfeDadosMsg();
ByteArrayInputStream XMLString = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader XML = XMLInputFactory.newInstance().createXMLStreamReader(XMLString);
nfeDados = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(XML);
NfeStatusServico2Stub nfeStub = new NfeStatusServico2Stub();
strXMLRetorno = nfeStub.nfeStatusServicoNF2(nfeDados, nfeCabecE).getExtraElement().toString();
System.out.println(strXMLRetorno);
} catch (Throwable e1)
{
e1.printStackTrace();
}[/code]
tenho q incluir alguma lib nesse projeto ?
esta retornando
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/http/HttpResponseFactory
at org.apache.axis2.transport.http.SimpleHTTPServer.init(SimpleHTTPServer.java:116)
at org.apache.axis2.engine.ListenerManager.init(ListenerManager.java:74)
at org.apache.axis2.context.ConfigurationContext.getListenerManager(ConfigurationContext.java:692)
at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:163)
at org.apache.axis2.client.ServiceClient.(ServiceClient.java:143)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:91)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:77)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:126)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.(NfeStatusServico2Stub.java:118)
at StatusServico.main(StatusServico.java:139)
Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpResponseFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
… 10 more
[quote=evandromib]tenho q incluir alguma lib nesse projeto ?
[/quote]
Sim.
Eu precisei incluir as libs axis.jar, commons-discovery-0.2.jar e httpcore-4.0.jar
Eu tive esse seu erro também, o que resolveu foi esse ultimo jar
Bom dia Might Angel,
No websrvice de SP não tem a classe nfeCabecMsgE no lugar tem o nfeCabecMsg0 tem os mesmo metodos porém mesmo com o seu código esta dando o mesmo erro, 214 tamanho da mensagem excedeu .
se alguem puder me ajudar.
muito obrigado.
Pessoal…por favor alguem tem uma luz para o meu problema…
<nfeStatusServicoNF2Result xmlns=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2”><retConsStatServ xmlns=“http://www.portalfiscal.inf.br/nfe” versao=“2.00”><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006</verAplic><cStat>214</cStat><xMotivo>Rejeição: Tamanho da mensagem excedeu o limite estabelecido</xMotivo><cUF>35</cUF><dhRecbto>2010-03-04T08:54:08</dhRecbto></retConsStatServ></nfeStatusServicoNF2Result>
to precisando mesmo.
obrigado.
alves.Felipe
os enderecos acredito ser esses mesmo
detalhe…
tem que instalar o certificado da sua empresa no seu internet explorer
e acessar esses links pelo IE que pelo firefoz nao funciona pelo que percebi!
flw!
leonardoanselmo…
fiz assim pois não consegui usar o bean como vc disse que esta tentando fazer.
ele parece querer outra tag eh meio estranho…
até acredito ser pelo motivo que o colega ai em cima falou!
por não ser um projeto web
mas pra mim funcionou assim…
String nfeDadosMsg = "<nfeDadosMsg><consStatServ versao=\"2.00\"" +
" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" +
"<tpAmb>2</tpAmb><cUF>43</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
System.setProperty("javax.net.ssl.keyStoreType", "senha");
System.setProperty("javax.net.ssl.keyStore", "arq.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "arq.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "senha");
XMLStreamReader dad = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(nfeDadosMsg));
NfeStatusServico2Stub.NfeDadosMsg dadosMsg = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(dad);
NfeStatusServico2Stub.NfeCabecMsg cabecMsgteste = new NfeStatusServico2Stub.NfeCabecMsg();
cabecMsgteste.setCUF("43");
cabecMsgteste.setVersaoDados("2.00");
NfeStatusServico2Stub.NfeCabecMsgE cabecMsgE = new NfeStatusServico2Stub.NfeCabecMsgE();
cabecMsgE.setNfeCabecMsg(cabecMsgteste);
NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
System.out.println(stub.nfeStatusServicoNF2(dadosMsg, cabecMsgE).getExtraElement());
[quote=leonardoanselmo2007] Bom dia Might Angel,
No websrvice de SP não tem a classe nfeCabecMsgE no lugar tem o nfeCabecMsg0 tem os mesmo metodos porém mesmo com o seu código esta dando o mesmo erro, 214 tamanho da mensagem excedeu .
se alguem puder me ajudar.
muito obrigado.
[/quote]
Eu também uso o webservice de São Paulo, e essa classe foi gerada sim, com o nome nfeCabecMsgE. Ela é uma classe static dentro da Classe NfeStatusServico2Stub
Como você gerou as classes?
Use o método que tem aqui nesse tópico, usando o Axis2.
Eu usei o plugin do eclipse para gerar as classe o mais estranho que eu gerei as classes do ambiente nacional e ai apareceu NfeCabecMsgE e em SP apareceu NfeCabecMsg0
obrigado.
[quote=leonardoanselmo2007]Eu usei o plugin do eclipse para gerar as classe o mais estranho que eu gerei as classes do ambiente nacional e ai apareceu NfeCabecMsgE e em SP apareceu NfeCabecMsg0
obrigado.[/quote]
Que estranho, aqui gerou NfeCabecMsgE, e tudo funcionou sem problemas. também uso o plug-in do Eclipse.
baixou os wsdl novos? esta usando Axis2 ao inves do Axis para gerar as classes? as vezes é algum desses detalhezinhos que esta te atrapalhando
Estou usando eclipse Gaymed Axis2 os wsdl fornecidos no dia 26/02/2010 pela receita de SP, o mais estranho é que no ambiente nacional aparece certo…
eu não sei mais o que fazer…
muito obrigado.
Alguém está notando uma instabilidade do WS de Status do Serviço de SP??
estou tentando consumir esse serviço, mas ele parece que tem vontade própria
Tenho uma classe que envia o SOAP direto para o WS, eu fiz esse SOAP na mão
tem horas que essa classe funciona e tem horas que o que foi gerado pelo Axis2 funciona, mas os dois não funcionam ao mesmo tempo
[edit]
me paresse que sp mudou os ws
[edit 2]
mudaram mesmo
Pessoal
Acertei as classes que estavam com problemas, implantei conforme o código de vc’s mas continua a dar o mesmo problema:
<nfeStatusServicoNF2Result xmlns=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2”><retConsStatServ xmlns=“http://www.portalfiscal.inf.br/nfe” versao=“2.00”><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006</verAplic><cStat>214</cStat><xMotivo>Rejeição: Tamanho da mensagem excedeu o limite estabelecido</xMotivo><cUF>35</cUF><dhRecbto>2010-03-04T14:38:15</dhRecbto></retConsStatServ></nfeStatusServicoNF2Result>
se alguem puder me ajudar fiqcarei extremamente grato meu código esta abaixo:
import java.io.ByteArrayInputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsg;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeCabecMsgE;
import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.NfeDadosMsg;
public class Status {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws
Exception {
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:/Certificado Digital/Certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "G:/newcert/teste.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "senha");
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<dummy>"
+ "<consStatServ " + " versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
+ "<tpAmb>" + "2"+ "</tpAmb>"
+ "<cUF>" + "35" + "</cUF>" + "<xServ>STATUS</xServ>"
+ "</consStatServ>"
+ "</dummy>"; //Necessario colocar a tag 'dummy' para enganar o XMLReader.
try {
NfeCabecMsg nfeCabec = new NfeCabecMsg();
nfeCabec.setCUF("35");
nfeCabec.setVersaoDados("2.00");
NfeCabecMsgE nfeCabecE = new NfeStatusServico2Stub.NfeCabecMsgE();
nfeCabecE.setNfeCabecMsg(nfeCabec);
NfeDadosMsg nfeDados = new NfeDadosMsg();
ByteArrayInputStream XMLString = new ByteArrayInputStream(
nfeDadosMsg.getBytes());
XMLStreamReader XML = XMLInputFactory.newInstance()
.createXMLStreamReader(XMLString);
nfeDados = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(XML);
NfeStatusServico2Stub nfeStub = new NfeStatusServico2Stub();
String strXMLRetorno = nfeStub.nfeStatusServicoNF2(nfeDados, nfeCabecE)
.getExtraElement().toString();
System.out.println(strXMLRetorno);
} catch (Throwable e1) {
e1.printStackTrace();
}
}
}
Eu testo o seu código aqui sem mudar quase nada (mudo só o caminho e senha dos certicados) e não tenho problemas.
Pode ser algum tipo de incompatibilidade de versões então, do Java, do Axis2, do seu Eclipse, sei la…
Ja tentou inicializando a String antes de passar os argumentos? tipo:
String nfeDadosMsg = “”;
nfeDadosMsg = "<xml version … (etc)
meio chute essa sugestão, mais sei la, as vezes funciona.
Pessoal uma luz mais uma vez…
Eclipse
Version: 3.4.1
java jdk 1.6.0_11
axis2 1.5.1
Passo 1
- Crio um Dynamic Web Project
Passo 2
- Digito o nome do projeto
- Target Runtime - J2SEE Runtime Library
- Dynamic Web Module Version - 2.5
- Configuration - Default Configuration for J2SEE Runtime Library
passo 3
- Crio uma pasta dentro do projeto e copio todos os wsdl para lá
Passo 4
- Crio Web Service Client
Passo 5
- Localizo o NfeStatusServico2.wsdl e clico em finish
Passo 6
- Crio a classe que foi passada acima e click em executar
Feito ele manda a mensagem que minha mensagem esta muito grande.
Fiz o que Might Angel falou
e continua o mesmo problema.
alguem tem uma solução.
muito obrigado.
cara eu tava aqui sofrendo para resolver esses “probleminhas” aqui com vcs e meu codigo ficou bem parecido com esse e não tive problema nenhuma está rodando normalmente
a unica coisa que nao coloquei e pode ser q seja isso retira da string nfeDadosMsg a tag
como a mensagem como é padrão - tipo de ambiente e UF e sempre vai ter o msm tamanho nao importa o Estado que agente use
ele ja tenho um tamanho fixo
e acrescentando essa tag passe desse limite
é uma opção espero q ajude
flw
[quote=evandromib]cara eu tava aqui sofrendo para resolver esses “probleminhas” aqui com vcs e meu codigo ficou bem parecido com esse e não tive problema nenhuma está rodando normalmente
a unica coisa que nao coloquei e pode ser q seja isso retira da string nfeDadosMsg a tag
como a mensagem como é padrão - tipo de ambiente e UF e sempre vai ter o msm tamanho nao importa o Estado que agente use
ele ja tenho um tamanho fixo
e acrescentando essa tag passe desse limite
é uma opção espero q ajude
flw[/quote]
Pois é, e comigo se eu tiro a tag (pode ter o nome que vc quiser essa tag) eu recebo o erro
java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement cUF
Colocando ela la, o erro some, e não tenho problema com o tamanho da XML.
Eu acho que isso é alguma diferença de versão em algo que a gente esta usando.
leonardoanselmo2007, pelo seu esquema, eu faço assim:
Eclipse
Version: 3.4.3
java jdk 1.6.0_15
axis2 1.5.1
Passo 1
- Crio um Dynamic Web Project
Passo 2
- Digito o nome do projeto
- Target Runtime - Apache Tomcat v6.0
- Dynamic Web Module Version - 2.5
- Configuration - Default Configuration for Apache Tomcat v6.0
passo 3
- Coloco os wsdl dentro da pasta axis2, no meu diretório de instalação do Apache Tomcat6
- Inicio o servidor do Apache
Passo 4
- Crio Web Service Client
Passo 5
- Localizo o NfeStatusServico2.wsdl no servidor apache e clico em finish
Passo 6
- Crio a classe que foi passada acima e click em executar
Unica diferença esta no uso do Apache Tomcat 6