opa, tem sim. Esses são os métodos que eu utilizo.
public void consultaStatus(){
String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
+ "<nfeDadosMsg><consStatServ versao=\"2.00\""
+ " xmlns=\"http://www.portalfiscal.inf.br/nfe\">" + "<tpAmb>2</tpAmb>"
+ "<cUF>" + tf_codUF.getText() + "</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg>";
try {
NfeStatusServico2Stub.NfeCabecMsg nfecabec = new NfeStatusServico2Stub.NfeCabecMsg();
nfecabec.setCUF(tf_codUF.getText());
nfecabec.setVersaoDados("2.00");
NfeStatusServico2Stub.NfeCabecMsg5 cabE = new NfeStatusServico2Stub.NfeCabecMsg5();
cabE.setNfeCabecMsg(nfecabec);
configurarSSL();
ByteArrayInputStream baisDados = new ByteArrayInputStream(nfeDadosMsg.getBytes());
XMLStreamReader streamDados = XMLInputFactory.newInstance().createXMLStreamReader(baisDados);
NfeStatusServico2Stub.NfeDadosMsg dado = NfeStatusServico2Stub.NfeDadosMsg.Factory.parse(streamDados);
String http = Endereco(Integer.parseInt(tf_codUF.getText()), "2");
NfeStatusServicoNF2Result result = new NfeStatusServico2Stub(http).nfeStatusServicoNF2(dado, cabE);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document docs = builder.parse(new InputSource(new StringReader(result.getExtraElement().toString())));
String tag = "cStat";
NodeList elements = (NodeList) docs.getElementsByTagName(tag);
Element el = (Element) ((org.w3c.dom.NodeList) elements).item(0);
String cStat = el.getFirstChild().getNodeValue();
String tag3 = "xMotivo";
NodeList elements3 = (NodeList) docs.getElementsByTagName(tag3);
Element el3 = (Element) ((org.w3c.dom.NodeList) elements3).item(0);
String xMotivo = el3.getFirstChild().getNodeValue();
try {
String tag2 = "dhRetorno";
NodeList elements2 = (NodeList) docs.getElementsByTagName(tag2);
Element el2 = (Element) ((org.w3c.dom.NodeList) elements2).item(0);
String dhRetorno = el2.getFirstChild().getNodeValue();
String tag4 = "xObs";
NodeList elements4 = (NodeList) docs.getElementsByTagName(tag4);
Element el4 = (Element) ((org.w3c.dom.NodeList) elements4).item(0);
String xObs = el4.getFirstChild().getNodeValue();
xMotivo = RetiraAscentuacao(xMotivo);
ta_mensagem.setText(cStat + " - " + xMotivo + "\n");
xObs = RetiraAscentuacao(xObs);
System.out.println(dhRetorno + " - " + xObs);
} catch (Exception e) {
xMotivo = RetiraAscentuacao(xMotivo);
ta_mensagem.setText(cStat + " - " + xMotivo + "\n");
}
} catch (Exception e) {
ta_mensagem.setText("E01 - " + e.toString() + "\n");
System.out.println("E01 - " + e.toString());
}
}
public static String Endereco(int uf, String tpAmb) {
String endereco_new = "";
if (tpAmb == "2") {
switch (uf) {
case 42:
endereco_new = "https://homologacao.nfe.sefazvirtual.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx";
break;
default:
break;
} // fim do case
}
return endereco_new;
}
public void configurarSSL() throws Exception {
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", senha);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "certificado_servidor.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "123456");
}
public String RetiraAscentuacao(String texto) {
char[] acentuados2 = new char[]{'ç', 'á', 'à', 'ã', 'â', 'ä', 'é',
'è', 'ê', 'ë', 'í', 'ì', 'î', 'ï', 'ó', 'ò', 'õ', 'ô', 'ö',
'ú', 'ù', 'û', 'ü'};
char[] naoAcentuados2 = new char[]{'c', 'a', 'a', 'a', 'a', 'a', 'e',
'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o',
'u', 'u', 'u', 'u'};
for (int i = 0; i < acentuados2.length; i++) {
texto = texto.replace(acentuados2[i], naoAcentuados2[i]);
texto = texto.replace(Character.toUpperCase(acentuados2[i]),
Character.toUpperCase(naoAcentuados2[i]));
}
return texto;
}
As classes geradas pelo WSDL são: NfeStatusServico2CallbackHandler e NfeStatusServico2Stub