NFE - Consumir WS DPEC  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
f-schmitt
JavaChild
[Avatar]

Membro desde: 29/07/2006 08:25:22
Mensagens: 116
Localização: Gravatal
Offline

não seria mais facil você gerar o acesso ao wsdl usando axis2 ?

fica bem facil de usar....

Java, Clarion, HB++, PostgreSQL
[MSN]
starkiller
JavaTeenager
[Avatar]
Membro desde: 17/09/2010 17:39:19
Mensagens: 170
Localização: Manaus - Am
Offline

f-schmitt wrote:não seria mais facil você gerar o acesso ao wsdl usando axis2 ?

fica bem facil de usar....


Pode ate ser, vou tentar fazer aqui!

Desenvolvedor Java Mobile + Web
Android Developer too!

Só o Heavy Metal Salva!
starkiller
JavaTeenager
[Avatar]
Membro desde: 17/09/2010 17:39:19
Mensagens: 170
Localização: Manaus - Am
Offline

f-schmitt, vc teria algum exemplo de como eu chamo o servico de recepcao, usando o gerador do Axis2....ta bem complicado de enteder essas classes geradas por ele. Vc poderia me ajudar?

This message was edited 1 time. Last update was at 23/09/2010 14:37:02


Desenvolvedor Java Mobile + Web
Android Developer too!

Só o Heavy Metal Salva!
starkiller
JavaTeenager
[Avatar]
Membro desde: 17/09/2010 17:39:19
Mensagens: 170
Localização: Manaus - Am
Offline

Vlw Galera, consegui ja implementar pelo axis 2!! Vlw pela forca de todos!

Desenvolvedor Java Mobile + Web
Android Developer too!

Só o Heavy Metal Salva!
vanderlsilva
Smalltalk

Membro desde: 19/11/2010 10:26:44
Mensagens: 2
Offline

Amigo o que vc fez pra resolver esse problema... tentei de tudo e estava para desistir até que encontrei nesse forum que vc tinha o mesmo problema.. mas não consegui entender o que vc fez pra resolver.

Pode me ajudar por favor?




19/11/2010 09:26:11 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
SEVERE: SAAJ0009: Message send failed
19/11/2010 09:26:11 Soap main
SEVERE: null
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:157)
Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(HttpSOAPConnection.java:151)
... 2 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(HttpSOAPConnection.java:355)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(HttpSOAPConnection.java:180)
... 4 more
[MSN]
alves.Felipe
GUJ Ranger
[Avatar]

Membro desde: 21/01/2008 13:45:56
Mensagens: 766
Localização: Curitiba - Pr
Offline

vanderlsilva , como vc gerou suas classes? usou Axis 2?

Felipe Alves
[Email]
starkiller
JavaTeenager
[Avatar]
Membro desde: 17/09/2010 17:39:19
Mensagens: 170
Localização: Manaus - Am
Offline

Cara seguinte, eu usei Axis 2 pra gerar as classes apartir do wsdl! Usei a ferramenta que ja vem no Eclipse. Feito isso implementei minha classe de envio usando os metodos do das classe geradas pelo Axis 2:

Ficow assim:

public String sendDpec(String xml) throws Exception{
System.out.println("Entrei no Metodo!");

String retorno = null;
String dadosXml = xml;

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", certificateUrl);//Aqui vem o arquivo do certificado do seu cliente
System.setProperty("javax.net.ssl.keyStorePassword", keypass);//Aqui a senha deste certificado

System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", keyStoreUrl);//Aqui vem o arquivo criado atrav�s do comando keytool
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");


dadosXml = "<pog>"+dadosXml.substring(dadosXml.indexOf("?>")+2)+"</pog>";

SCERecepcaoRFBStub.SceCabecMsg cabec = new SCERecepcaoRFBStub.SceCabecMsg();
cabec.setVersaoDados("1.01");

SCERecepcaoRFBStub.SceCabecMsgE cabecMsgE = new SCERecepcaoRFBStub.SceCabecMsgE();
cabecMsgE.setSceCabecMsg(cabec);

XMLStreamReader dad = null;

try {
dad = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(dadosXml));
} catch (Exception e) {
e.printStackTrace();
}

SCERecepcaoRFBStub.SceDadosMsg dadosMsg = null;
try {
dadosMsg = SCERecepcaoRFBStub.SceDadosMsg.Factory.parse(dad);
} catch (Exception e) {
e.printStackTrace();
}

SCERecepcaoRFBStub stub;
try {
stub = new SCERecepcaoRFBStub();
retorno = stub.sceRecepcaoDPEC(dadosMsg, cabecMsgE).getExtraElement().toString();
} catch (Exception e) {
e.printStackTrace();
}

System.out.println("Cheguei no retorno");
return retorno;
}

ficow assim! Recaptulando, gere suas classe usando Axis 2 e a ferramenta do eclipse. E use essa minha implementação ai em cima! Qualquer coisa tamo ai!

This message was edited 1 time. Last update was at 19/11/2010 13:56:06


Desenvolvedor Java Mobile + Web
Android Developer too!

Só o Heavy Metal Salva!
vanderlsilva
Smalltalk

Membro desde: 19/11/2010 10:26:44
Mensagens: 2
Offline

alves.Felipe

Não consegui fazer pelo axis2 porque não sei como fazer
estou usando a classe que possoal citou

segue... da olhada

import java.net.MalformedURLException;
import java.net.URL;

import java.security.Security;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPConstants;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.Element;

public class Soap {

public static Node transmitir(URL endpoint, Document cabecDoc, Document dadosDoc, String soapAction) throws Exception {
Node elemento = null;
Node adotado = null;


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", "D:\\Nfe\\certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "senha");


SOAPMessage reqSoap = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage();

reqSoap.getSOAPPart().setXmlStandalone(true);
reqSoap.getMimeHeaders().addHeader("SOAPAction", soapAction);

elemento = cabecDoc.getDocumentElement();
adotado = reqSoap.getSOAPPart().adoptNode(elemento);
reqSoap.getSOAPHeader().appendChild(adotado);

elemento = dadosDoc.getDocumentElement();
adotado = reqSoap.getSOAPPart().adoptNode(elemento);
reqSoap.getSOAPBody().appendChild(adotado);


SOAPConnectionFactory cnnFactory = SOAPConnectionFactory.newInstance();
SOAPConnection cnn = cnnFactory.createConnection();
SOAPMessage respSoap = cnn.call(reqSoap, endpoint);

Node nodo = respSoap.getSOAPBody().getChildNodes().item(0);

return nodo;
}

public static void main(String[] args) {
URL endpoint2 = null;
try {
endpoint2 = new URL("https://homologacao.nfe.ms.gov.br/homologacao/services2/NfeStatusServico2");
} catch (MalformedURLException ex) {
Logger.getLogger(Soap.class.getName()).log(Level.SEVERE, null, ex);
}

Document Doc = null;
Document Doc2 = null;
try {
Doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Doc2 = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
} catch (ParserConfigurationException ex) {
Logger.getLogger(Soap.class.getName()).log(Level.SEVERE, null, ex);
}

// Doc
Element nfeCabecMsg = Doc.createElement("nfeCabecMsg");
nfeCabecMsg.setAttribute("xmlns", "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2");


Element versaoDados = Doc.createElement("versaoDados");
versaoDados.setTextContent("2.00");
nfeCabecMsg.appendChild(versaoDados);

Element cUF = Doc.createElement("cUF");
cUF.setTextContent("51");
nfeCabecMsg.appendChild(cUF);

Doc.appendChild(nfeCabecMsg);

Element nfeDadosMsg = Doc2.createElement("nfeDadosMsg");
nfeCabecMsg.setAttribute("xmlns", "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2");

Element consStatServ = Doc2.createElement("consStatServ");
consStatServ.setAttribute("xmlns", "http://www.portalfiscal.inf.br/nfe");
consStatServ.setAttribute("versao", "2.00");

Element tpAmb = Doc2.createElement("tpAmb");
tpAmb.setTextContent("2");
consStatServ.appendChild(tpAmb);

Element cUF2 = Doc2.createElement("cUF");
cUF2.setTextContent("2");
consStatServ.appendChild(cUF2);

Element xServ = Doc2.createElement("xServ");
xServ.setTextContent("STATUS");
consStatServ.appendChild(xServ);

nfeDadosMsg.appendChild(consStatServ);

Doc2.appendChild(nfeDadosMsg);


String soapAction2 = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2";


try {

JOptionPane.showMessageDialog(null, transmitir(endpoint2, Doc, Doc2, soapAction2).toString());
} catch (Exception ex) {
Logger.getLogger(Soap.class.getName()).log(Level.SEVERE, null, ex);
}
}

}


Mas da sempre o erro que falei acima...
[MSN]
alves.Felipe
GUJ Ranger
[Avatar]

Membro desde: 21/01/2008 13:45:56
Mensagens: 766
Localização: Curitiba - Pr
Offline

as classes tem que ser iguais ao que o starkiller postou..
da uma olhada ai para configurar o Axis 2 no eclipse..
http://www.eclipse.org/webtools/community/tutorials/BottomUpAxis2WebService/bu_tutorial.html

Felipe Alves
[Email]
starkiller
JavaTeenager
[Avatar]
Membro desde: 17/09/2010 17:39:19
Mensagens: 170
Localização: Manaus - Am
Offline

Cara o que ta faltando no teu codigo é essa propriedade na parte de segurança SSL:

System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");

O que ocorre é que a sun colocou esse entrave depois da versão 1.6.2.
Coloca isso ae que vai funcionar!

Desenvolvedor Java Mobile + Web
Android Developer too!

Só o Heavy Metal Salva!
 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team