Você está na página 1de 12

Tutorial acessando WebService NFE 2.

28/03/2011

Autor: Pedro H. B. Alves

@pedruhenrik

Material utilizado:

Eclipse Helios + WTP;


JDK 1.6 update 24;
Windows 7 Starter
Fire Fox 4
Certificado A1 instalado no computador;
Axis2 1.5.4 - http://axis.apache.org/axis2/java/core/download.cgi

1 Passo Localizando o Servio


Acessar a lista de webservices da NFe:
Homologao: http://hom.nfe.fazenda.gov.br/PORTAL/WebServices.aspx
Produo: http://www.nfe.fazenda.gov.br/portal/WebServices.aspx
Escolher a URL do servio desejado relacionado ao Estado e Verso da NFe.
Acesse a URL escolhida atravs do navegador:

Escolher a URL do servio desejado relacionado ao Estado e Verso da Nfe.


Acesse a URL escolhida atravs do navegador:

Ser solicitado o certificado A1 conforme imagem acima.

Ao acessar a URL do servio, solicite a descrio do servio(arquivo .wsdl) no nosso exemplo


s clicar em Service Description.

Acima o arquivo .wsdl


Salve essa pgina na extenso .wsdl:

2 Passo Gerar as classes para acesso atravs do Axis.


Axis2 1.5.4 - http://axis.apache.org/axis2/java/core/download.cgi
Com o Axis2 descompactado em um diretrio de sua preferncia acesse o atravs do prompt de
comando:

o comando: wsdl2java.bat -uri c:\NfeRecepcao2.asmx.wsdl -o c:\nfe2


especifica que sero geradas as classes para acesso do wsdl(c:\NfeRecepcao2.asmx.wsdl) no
diretrio (c:\nfe2)

Agora podemos importar as classes geradas no projeto do eclipse.

3 Passo Importando o .wsdl para o Eclipse


Abrir o Eclipse:

Com as classes importadas, necessrio importar as libs:

Sim eu no sabia quais bibliotecas importar e acabei importando tudo o que vi pela frente, rs:
activation-1.1.jar
antlr-2.7.7.jar
axiom-api-1.2.9.jar
axiom-dom-1.2.9.jar
axiom-impl-1.2.9.jar
axis.jar
axis2-adb-1.5.2.jar
axis2-adb-codegen-1.5.2.jar
axis2-ant-plugin-1.5.2.jar
axis2-clustering-1.5.2.jar
axis2-codegen-1.5.2.jar
axis2-corba-1.5.2.jar
axis2-fastinfoset-1.5.2.jar
axis2-java2wsdl-1.5.2.jar
axis2-jaxbri-1.5.2.jar
axis2-jaxws-1.5.2.jar
axis2-jibx-1.5.2.jar
axis2-json-1.5.2.jar
axis2-kernel-1.5.2.jar
axis2-metadata-1.5.2.jar
axis2-mtompolicy-1.5.2.jar
axis2-saaj-1.5.2.jar
axis2-soapmonitor-servlet-1.5.2.jar
axis2-spring-1.5.2.jar
axis2-transport-http-1.5.2.jar
axis2-transport-local-1.5.2.jar
axis2-xmlbeans-1.5.2.jar
bcel-5.1.jar
commons-codec-1.3.jar
commons-discovery-0.2.jar
commons-fileupload-1.2.jar
commons-httpclient-3.1.jar
commons-io-1.4.jar

commons-logging-1.1.1.jar
commons-logging.jar
geronimo-annotation_1.0_spec-1.1.jar
geronimo-jaxws_2.1_spec-1.0.jar
geronimo-jta_1.1_spec-1.1.jar
geronimo-saaj_1.3_spec-1.0.1.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
httpcore-4.0.jar
jalopy-1.5rc3.jar
jaxb-api-2.1.jar
jaxb-impl-2.1.7.jar
jaxb-xjc-2.1.7.jar
jaxen-1.1.1.jar
jaxrpc.jar
jettison-1.0-RC2.jar
jibx-bind-1.2.1.jar
jibx-run-1.2.1.jar
juli-6.0.16.jar
log4j-1.2.15.jar
mail-1.4.jar
neethi-2.0.4.jar
saaj.jar
tribes-6.0.16.jar
woden-api-1.0M8.jar
woden-impl-dom-1.0M8.jar
wsdl4j-1.6.2.jar
wsdl4j.jar
wstx-asl-3.2.9.jar
xalan-2.7.0.jar
xercesImpl-2.8.1.jar
xml-resolver-1.2.jar
xmlbeans-2.3.0.jar XmlSchema-1.4.3.jar

Adicione tambm a classe para configurar a conexo ssl:

public class ConfigurarSSL {


public void configurarSSL(String cert, String keystore, String senhaCert) {
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
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", cert);
System.setProperty("javax.net.ssl.keyStorePassword", senhaCert);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", keystore);
}
}

Depois basta montar uma classe de teste:

public class Teste {


public static void main(String[] args) {
String cert = "";
String keystore = "C:\\NFE\\KEYSTORE\\nfe.keystore";
String senhaCert = "";
String nfeDadosMsg = "<nfeDadosMsg></nfeDadosMsg>";
String http = "endereco_servico_web_sefaz";
new ConfigurarSSL().configurarSSL(cert, keystore, senhaCert);
try {
NfeRecepcao2Stub.NfeCabecMsg nfecabec = new NfeRecepcao2Stub.NfeCabecMsg();
nfecabec.setCUF("35");
nfecabec.setVersaoDados("2.00");
NfeRecepcao2Stub.NfeCabecMsgE cabE = new NfeCabecMsgE();
cabE.setNfeCabecMsg(nfecabec);
ByteArrayInputStream baisDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE,Boolean.FALSE);
XMLStreamReader xmlReader = xmlInputFactory.createXMLStreamReader(baisDados);
NfeRecepcao2Stub.NfeDadosMsg dado =
NfeRecepcao2Stub.NfeDadosMsg.Factory.parse(xmlReader);
NfeRecepcaoLote2Result result = new NfeRecepcao2Stub(http)
.nfeRecepcaoLote2(dado, cabE);
System.out.println(result.getExtraElement());

} catch (Exception e) {
throw new RuntimeException("Message:" + e.getMessage() + " Cause: " + e.getCause() );
}
}
}
o resultado:
<retEnviNFe xmlns="http://www.portalfiscal.inf.br/nfe"
versao="2.00"><tpAmb>1</tpAmb><verAplic>SP_NFE_PL_006e</verAplic><cStat>103</cStat><xMotivo>Lo
te recebido com sucesso</xMotivo><cUF>35</cUF><dhRecbto>2011-0328T15:34:14</dhRecbto><infRec><nRec>0123456789012345</nRec><tMed>1</tMed></infRec></retEnviNFe>

Você também pode gostar