Ola…
Alguém conseguiu consumir o WS do DPEC?? estou com problemas no xml do cabeçalho…
se alguém tiver algumas dicas…fiquem à vontade…
abraco
Ola…
Alguém conseguiu consumir o WS do DPEC?? estou com problemas no xml do cabeçalho…
se alguém tiver algumas dicas…fiquem à vontade…
abraco
ninguém implementou o DPEC???
Eu estou implementando por agora… não sei qual exatamente seu problema… gerar o xml ? enviar ?
Estou tendo alguns problemas quanto ao envio… utilizo a plataforma apache axis… para criar o cliente …
; nested exception is:
org.xml.sax.SAXParseException: Premature end of file.
Ja olhei bastante coisa no google mas nda ate agora =/
então cara… eu tb uso o axis… aquele wizard do eclipse…
eu gerei o xml tranquilo… meu problema é que não sei como mandar o cabeçalho…
pq nos outros ws (envNfe,etc…), mando 2 strings como parametro (1 o cabec. e outra os dados) e nesse do dpec
tem que mandar um Objeto SceDadosMsg … entende?
public SceRecepcaoDPECResult sceRecepcaoDPEC(SceDadosMsg) // essa é a assinatura do método
Compreendo… eu estou no mesmo “dilema”.
Ao inves de passar parametros, eu estou criando o envelope (SOAPEnvelope).
Nele eu adiciono o cabecalho (SOAPHeaderElement) e o corpo (SOAPBodyElement).
Ao que olhei o sceDadosMsg é composto pelo xml da msg do dpec. Dessa forma consegui gerar a mensagem semelhanto ao exemplo fornecido em https://hom.nfe.fazenda.gov.br/SCERecepcaoRFB/SCERecepcaoRFB.asmx
Entretando da o erro… que acho que é de algum problema no xml =/
Pelo que eu entendi a mensagem SOAP deve ser montada assim:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<sceCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB">
<versaoDados>1.01</versaoDados>
</sceCabecMsg>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<sceRecepcaoDPEC xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB">
<sceDadosMsg>
<envDPEC xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">
<infDPEC Id="DPEC11111111111111">
<ideDec>
<cUF>33</cUF>
<tpAmb>2</tpAmb>
<verProc>PROGRAMA</verProc>
<CNPJ>11111111111111</CNPJ>
<IE>11111111</IE>
</ideDec>
<resNFe>
<chNFe>33091011111111111111550020000013410000013419</chNFe>
<CNPJ>11111111111111</CNPJ>
<UF>RJ</UF>
<vNF>2.50</vNF>
<vICMS>2.50</vICMS>
<vST>0.00</vST>
</resNFe>
</infDPEC>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#DPEC11111111111111">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>XXX...XXX=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>XXX...XXX=</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>XXX...XXX=</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</envDPEC>
</sceDadosMsg>
</sceRecepcaoDPEC>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Eu substitui os dados reais por fictícios e formatei o xml pra q vcs vejam, mas o xml que eu transmito não tem formatação nem quebra de linha.
Quando eu envio esse xml eu recebo de volta exatamente essa mensagem SOAP:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Server was unable to process request. ---> Object reference not set to an instance of an object.</faultstring>
<detail/>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Eu envio as mensagens SOAP usando SOAPMessage e SOAPConnection, todos os demais processos da nota fiscal eletrônica estão funcionando, recepcao de nota, consulta de recibo, cancelamento, inutilizacao, SCAN, etc, o DPEC é o único que me retorna essa mensagem.
Alguém sabe me dizer onde estou errando?
Eu recebi esse problema… quando eu havia esquecido de setar o soap version para 1.2
[]s
Fernando
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Header>
<sceCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB">
<versaoDados>string</versaoDados>
</sceCabecMsg>
</soap12:Header>
<soap12:Body>
<sceDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB">xml</sceDadosMsg>
</soap12:Body>
</soap12:Envelope>
esse eh o modelo que tem no site… nao sei se vai ter o elemento … eu nao to usando… mas ainda to no meu problema …
Bom… conseguir consumir o dpec agora eh tratar alguns erros retornados na msg.
O que fiz de diferente foi que ao inves de chamar o metodo invoke passando como parametro um SOAPEnvelop… Decidi criar uma mensagem e passar ela como parametro pro método.
Já que o método aceita tanto um quanto o outro… fazendo os devidas iteracoes… nao sei explicar a diferença…
[]s
Fernando
Obrigado pela ajuda de vcs, eu estava usando <sceRecepcaoDPEC> e ela não é mesmo necessária. Eu estava me baseando no manual de contingência, mas ele está uma bagunça, devia ter visto esse link de vcs desde o início, rsrs.
Meu código então ficou apenas assim:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<sceCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB">
<versaoDados>1.01</versaoDados>
</sceCabecMsg>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<sceDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB">
...xml...
</sceDadosMsg>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Estou usando SOAP 1.1, agora está funcionando 100%, estou transmitindo e recebendo o retorno, vlw ae 
Esse é um exemplo simplificado do código que eu estou usando pra enviar os xmls, caso alguém ache útil:
import java.net.URL;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPMessage;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
public class Soap {
public Node transmitir(URL endpoint, Document cabecDoc, Document dadosDoc,
String soapAction) throws Exception {
Node elemento = null;
Node adotado = null;
SOAPMessage reqSoap = MessageFactory.newInstance().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;
}
}
Bom… conseguir consumir o dpec agora eh tratar alguns erros retornados na msg.
O que fiz de diferente foi que ao inves de chamar o metodo invoke passando como parametro um SOAPEnvelop… Decidi criar uma mensagem e passar ela como parametro pro método.
Já que o método aceita tanto um quanto o outro… fazendo os devidas iteracoes… nao sei explicar a diferença…[]s
Fernando
Alguém sabe como montar o MessageElement[] ??
gerei as classes webservice com o axis e para fazer a chama no webservice faço da mesma forma que nos outros serviços
mas o DPEC é um pouco diferente, ele pede um Objeto como parâmetro, e não o XML como o outros serviços.
SCERecepcaoRFBLocator service = new SCERecepcaoRFBLocator();
SCERecepcaoRFBSoap_PortType recepcao = service.getSCERecepcaoRFBSoap();
SceDadosMsg sceDadosMsg = new SceDadosMsg(MessageElement[]);
recepcao.sceRecepcaoDPEC(sceDadosMsg); //nos outros serviços, aqui se passaria somente o xml, mas nesse é diferente....
alguém tem ideia ou conhece como se monta esse array?
abraço pessoal!
olha, eu não usei o axis, mas vou dar um chute aqui, talvez funcione, se não funcionar me perdoe por favor rsrs
SCERecepcaoRFBLocator service = new SCERecepcaoRFBLocator();
SCERecepcaoRFBSoap_PortType recepcao = service.getSCERecepcaoRFBSoap();
SceDadosMsg sceDadosMsg = new SceDadosMsg(MessageElement[]);
Document doc = ...o seu documento DOM...
recepcao.sceRecepcaoDPEC( new Object[]{ doc } );
então eu fiz assim:
MessageElement [] elements = new MessageElement[1];
// elements[0] = new MessageElement(docCabec.getDocumentElement());
elements[0] = new MessageElement(doc.getDocumentElement());
SceDadosMsg dadosMsg = new SceDadosMsg();
dadosMsg.set_any(elements);
SCERecepcaoRFBSoapProxy dpecProxy = new SCERecepcaoRFBSoapProxy();
SceRecepcaoDPECResult result = dpecProxy.sceRecepcaoDPEC( dadosMsg);
MessageElement [] elementsResult = result.get_any();
mas eu não sei como que fica o cabecalho… e enviando deste jeito eu recebo esta mensagem:
<retDPEC versao="1.01" xmlns="http://www.portalfiscal.inf.br/nfe">
<infDPECReg Id="RETDPEC"><tpAmb>2</tpAmb><verAplic>1.01</verAplic><cStat>409</cStat>
<xMotivo>Rejeicao: Elemento nfeCabecMsg inexistente no SOAP Header</xMotivo></infDPECReg>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#RETDPEC"><Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue></X509Certificate></X509Data></KeyInfo></Signature>
</retDPEC>
eu tentei fazer igual ao do fscontato mas nesta parte o adotado fica null ai da erro para fazer o append na linha de baixo…
adotado = reqSoap.getSOAPPart().adoptNode(elemento);
reqSoap.getSOAPHeader().appendChild(adotado);
fscontato como que fica o seu xml de cabec?
ainda não mechi denovo no WS, mas pelo que vi na especificação o cabeçalho so se passa a versão…
alves.Felipe, no meu caso eu estou montando a mensagem soap na mão, dessa forma eu consigo inserir o documento sceCabecMsg diretamente no header do soap e o documento sceDadosMsg no body do soap.
O que me chamou atenção no seu código é que este SCERecepcaoRFBSoapProxy pede apenas o sceDadosMsg, ora nenhuma vc monta o sceCabecMsg.
O axis gerou uma classe tipo SceCabecMsg.java? Talvez tenha alguma forma de vc passá-la pra esse SCERecepcaoRFBSoapProxy?
Eu estive olhando neste site http://www.nsftools.com/stubby/ApacheAxisClientTips.htm , na seção Adding SOAP Header Elements, uma forma de se interagir com o stub e pegar a seção header do soap, não sei se tem haver com a forma como vc gerou seus stubs, mas talvez te ajude?
alves.Felipe, no meu caso eu estou montando a mensagem soap na mão, dessa forma eu consigo inserir o documento sceCabecMsg diretamente no header do soap e o documento sceDadosMsg no body do soap.
<versaoDados>1.01</versaoDados>
então cara… gerou a classe SceCabecMsg… mas nao achei onde que uso… hehe… e no método que chamo para consumir pede apenas o SceDadosMsg… seila… eu até alterei os parametros…
tentei passar os 2… passar como string… mas ai ja da erro de cara…falando que esta errado os parametros…
vou dar uma olhada no site q vc passou…
eu vi seu codigo… eu tentei copiar mas não vingou… não sei pq…da o erro que eu falei no post anterior… mas eu queria saber se vc cria um Document para o cabec que tem apenas a versão?
tipo assim:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
String cabecXml =
"<sceCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB\">"
+ "<versaoDados>1.01</versaoDados>"
+ "</sceCabecMsg>";
Document cabecDoc = db.parse(new ByteArrayInputStream(cabecXml.getBytes()));
e então esse cabecDoc eu adiciono no header do soap
Bom… conseguir consumir o dpec agora eh tratar alguns erros retornados na msg.
O que fiz de diferente foi que ao inves de chamar o metodo invoke passando como parametro um SOAPEnvelop… Decidi criar uma mensagem e passar ela como parametro pro método.
Já que o método aceita tanto um quanto o outro… fazendo os devidas iteracoes… nao sei explicar a diferença…[]s
Fernando
cara… qdo vc disse ali que esta passando uma mensagem como parametro… essa mensagem é uma string?
Nao nao…
Me refiro a um SOAPMessage, que contem o SOAPEnvelope
Vo dx aqui um exemplo.. substituindo variaveis por string pra ficar de facil entendimento.
Dps apenas faço uso da chamada
call = (Call) service.createCall();
//Inicializa Pacote
SOAPEnvelope envelopeAxis = new SOAPEnvelope();
envelopeAxis.setEncodingStyle("http://www.w3.org/2003/05/soap-envelope");
//Header
SOAPHeaderElement oHeaderElement =
new SOAPHeaderElement(new QName("http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB", "sceCabecMsg"));
oHeaderElement.addChildElement("versaoDados").addTextNode("1.01");
oHeaderElement.setPrefix("");
setRequestHeaders(call);
setAttachments(call);
//Body
SOAPBodyElement oBodyElement = new SOAPBodyElement(new QName("http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB", "sceDadosMsg"));
oBodyElement.setPrefix("");
//Obtem documento XML para passagem de parametro
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
InputStream is = new ByteArrayInputStream(vo.getXmlDados().getBytes()); //XML que contem <envDPEC...
Document doc = dbf.newDocumentBuilder().parse(is);
oBodyElement.setObjectValue(doc);
//Configura o Envelope
envelopeAxis.addBodyElement(oBodyElement);
envelopeAxis.addHeader(oHeaderElement);
//Configura Mensagem
Message msg = new Message(envelopeAxis.getAsString(),false);
goianinho77, consegui fazer a partir do teu código…
só precisei adicionar estas 2 linhas…
call.setTargetEndpointAddress(new java.net.URL("https://hom.nfe.fazenda.gov.br/SCERecepcaoRFB/SCERecepcaoRFB.asmx"));
call.setSOAPActionURI("http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB/sceRecepcaoDPEC");
valeo pela ajuda da galera ai…
goianinho77, consegui fazer a partir do teu código…
só precisei adicionar estas 2 linhas…
call.setTargetEndpointAddress(new java.net.URL("https://hom.nfe.fazenda.gov.br/SCERecepcaoRFB/SCERecepcaoRFB.asmx")); call.setSOAPActionURI("http://www.portalfiscal.inf.br/nfe/wsdl/SCERecepcaoRFB/sceRecepcaoDPEC");valeo pela ajuda da galera ai…
Bacana… sim sim… essa parte fica na configuracao da chamada.
[]s
Fernando
Parabéns ao fscontato
O webservice genérico é muito bom!
Desculpem minha ignorancia mas o codigo do goianinho77 sobre o soapheader deve ser adicionado na classe SCERecepcaoRFBSoapProxy ?
fscontato
que valor é informado em soapAction no seu exemplo?
obrigado.
fscontatoque valor é informado em soapAction no seu exemplo?
obrigado.
No do fscontato eu não sei, mas no meu eu adiciono:
olá.
quais são os certificados que preciso importar para acessar os webservices do DPEC?
estou tentando com os certificados que uso na NFe mas não está conectando…
eu gerei um keystore e uso na NFe. Consigo conexão tanto no ambiente de produção quanto no de homologação, mas na DPEC não vai! =/
vlw
rodrigobraz eu coloquei todas as cadeias de certificados que a NFe usa num único keystore
Se não estou enganado foi nesta página:
http://www.serpro.gov.br/servicos/certificacao_digital
Assim consigo acessar qualquer Webservice de qualquer UF
não funcionou =/
importei os certificados do link mas continuo não conseguindo a conexão!
erro:
17/07/2010 10:36:49 org.apache.axis2.transport.http.HTTPSender sendViaPost
INFO: Unable to sendViaPost to url[https://hom.nfe.fazenda.gov.br/SCEConsultaRFB/SCEConsultaRFB.asmx]
javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1623)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:198)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:188)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloRequest(ClientHandshaker.java:286)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:114)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:525)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:465)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:746)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at br.inf.portalfiscal.www.nfe.wsdl.sceconsultarfb.SCEConsultaRFBStub.sceConsultaDPEC(SCEConsultaRFBStub.java:172)
at com.cocari.nfe.dpec.ws.WSDepecManager.consultaDPEC(WSDepecManager.java:68)
at teste.TesteEnvioDPEC.consultaDPEC(TesteEnvioDPEC.java:41)
at teste.TesteEnvioDPEC.main(TesteEnvioDPEC.java:18)
alguma idéia?!
rodrigobraz vc pode fazer um teste ?
Veja se consegue acessar a url abaixo do seu navegador:
https://hom.nfe.fazenda.gov.br/SCEConsultaRFB/SCEConsultaRFB.asmx?wsdl
consigo acessar sim Alex.
aparece no navegador o xml do webservice.
eu acho q está faltando algum certificado a ser importado, mas não sei qual.
vlw
rodrigobraz, já conseguiu resolver o problema ?
Senão posso enviar meu jks via email pra você testar.
olá Alex.
nem consegui, cara.
to até desistindo… acho q vou fazer gerar o arquivo xml pro usuário fazer o upload no site da receita mesmo =/
mas se puder enviar seu jks pra eu testar, agraderecia!
vlw
Ola pessoal, ja venho acompanhando a algum tempo esse forum, que por sinal me ajudou muito a desenvolver o sistema de Nota Fiscal Eletronica da empresa onde trabalho. Mas surgiu um problema, tenho de desenvolver o modulo para o Dpec, e empaquei em um erro! Usei de base o codigo do usuario fscontato , mas noa deu certo..o erro que encontrei foi esse:
17/09/2010 16:45:42 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
GRAVE: SAAJ0009: Message send failed
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(Unknown Source)
at com.melo.teste.Soap.transmitir(Soap.java:44)
at com.melo.teste.Teste.main(Teste.java:76)
Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at java.security.AccessController.doPrivileged(Native Method)
... 3 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
Caused by: javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
... 6 more
Caused by: javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloRequest(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
... 9 more
CAUSE:
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(Unknown Source)
at com.melo.teste.Soap.transmitir(Soap.java:44)
at com.melo.teste.Teste.main(Teste.java:76)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
Caused by: javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
... 6 more
Caused by: javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloRequest(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
... 9 more
CAUSE:
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(Unknown Source)
at com.melo.teste.Soap.transmitir(Soap.java:44)
at com.melo.teste.Teste.main(Teste.java:76)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
Caused by: javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
... 6 more
Caused by: javax.net.ssl.SSLException: HelloRequest followed by an unexpected handshake message
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloRequest(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
... 9 more
se puderem me ajudar, agradeco muito.
startkiller, você consegue acessar a URL abaixo:
https://hom.nfe.fazenda.gov.br/SCERecepcaoRFB/SCERecepcaoRFB.asmx?wsdl
Senão conseguir de uma olhada nesse tópico
Cara consigo sim acessar o wsdl…Fiz os passos que vc ensina em seu tutorial, mas tbm nao deu certo! Tipo, devo gerar uma nova Jks? E usar essa jks gerada la no meu projeto? Ou devo reinstalar essa jks e e gerar os .cer apartir dela?! Isso nao ficou muito claro pra mim!
Cara, os passos no tutorial iam ser válidos se você não conseguisse acessar o wsdl, mas como conseguiu o problema deve ser outro
Saquei, tipo, meu certificado esta pra vencer, nao poderia ser esse o problema? Pois lembro de ter lido em algum lugar, que o certificado deixa de ser valido um mes antes de vencer, vou testar com o atualizado, pois minha empresa ja tirou um novo, colocarei aqui os resultados de meus testes!
Cara, testei aqui e nao deu certo ainda, Nao sei mais o que fazer, importei todas as cadeias e, inclusive, estou usando o novo certificado que minha empresa requisitou, mas nao consigo estabelecer conexao com o server! Ai vai meu codigo pra vcs darem uma olhada e se puderem, me dar uma luz!
public class Soap {
public 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","C:\\certDpec\\cert.pfx");//Aqui vem o arquivo do certificado do seu cliente
System.setProperty("javax.net.ssl.keyStorePassword", "******");//Aqui a senha deste certificado
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:\\mao.keystore");//Aqui vem o arquivo criado atrav�s do comando keytool
SOAPMessage reqSoap = MessageFactory.newInstance().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;
}
}
Minha Classe teste que chama a classe Soap, que peguei aqui no topico mesmo. Mas da o erro que listei acima!
public class Soap {
public 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","C:\\certDpec\\cert.pfx");//Aqui vem o arquivo do certificado do seu cliente
System.setProperty("javax.net.ssl.keyStorePassword", "assimsera");//Aqui a senha deste certificado
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:\\mao.keystore");//Aqui vem o arquivo criado atrav�s do comando keytool
SOAPMessage reqSoap = MessageFactory.newInstance().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;
}
}
Por alguma razao, da um erro de SSL, sendo que consigo acessar a wsdl pelo Browser!
Sendo que meu sistema consegue conexao com o servidor da NFe de 4 estados diferentes, mas nao conecta com o bendito do Dpec!
Obrigado desde ja!
É possível que seja a versão da JDK/JRE
Você pode fazer o downgrade pra versão 1.6.18
ou passar como parâmetro
-Dsun.security.ssl.allowUnsafeRenegotiation=true
Tive o mesmo problema aqui de “”, formatei a maquina semana passada dai paro de funcionar tudo…
Li no forum que depois da versão 1.6.19 foi desabilitado uns negocio por segurança.
Cara li isso em outro lugar, e coloquei essa propriedade, mas no meu fonte mesmo:
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
e agora o erro eh esse citado abaixo:
23/09/2010 11:03:18 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
GRAVE: SAAJ0008: Bad Response; Forbidden
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (403Forbidden
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
at com.melo.teste.Soap.transmitir(Soap.java:44)
at com.melo.teste.Teste.main(Teste.java:76)
Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (403Forbidden
at java.security.AccessController.doPrivileged(Native Method)
... 3 more
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (403Forbidden
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
CAUSE:
java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (403Forbidden
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
at com.melo.teste.Soap.transmitir(Soap.java:44)
at com.melo.teste.Teste.main(Teste.java:76)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (403Forbidden
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
CAUSE:
java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (403Forbidden
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.call(Unknown Source)
at com.melo.teste.Soap.transmitir(Soap.java:44)
at com.melo.teste.Teste.main(Teste.java:76)
Caused by: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Bad response: (403Forbidden
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection.post(Unknown Source)
at com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection$PriviledgedPost.run(Unknown Source)
... 4 more
Como faco pra setar essa propriedade, eh no java compiler no Eclipse???, ou vou pelo prompt mesmo??
Se puder me ajudar mais um pouco, agradeco. Ja to rodando o google aqui pra solucionar!
Desde ja vlw pela forca!
Caras, acho que consegui, Tipo coloquei aquela propriedade nas minha configuracoes de seguranca, e fiz os passos descritos pelo nosso amigo alexegidio no outro post dele citado mais acima, e nao me retornou mais o erro, e sim me retorna a menssagem:
soap:ServerServer was unable to process request. ---> Object reference not set to an instance of an object.
acho que agora eh so arrumar o protocolo soap! Qualquer coisa posto mais aqui!
o erro de 403Forbidden normalmente é relacionado a certificados, da uma verificada nos certificados do servidor e no e-cnpj
Pois eh esse erro aew, ja nao aparece mais, esta aparecendo esse agora:
soap:ServerServer was unable to process request. ---> Object reference not set to an instance of an object.
acredito que seja meu protocolo soap que ta indo errado!! Vou pegar o exemplo dos colegas aqui no forum, ja que gerar essas classes pelo Axis deixa bem complicado de se entender!
Pois eh esse erro aew ja nao aparece mais, resolvi o problema exportando as privates keys como o alexgidio explica em um outro post dele, esta aparecendo esse erro agora:soap:ServerServer was unable to process request. ---> Object reference not set to an instance of an object.acredito que seja meu protocolo soap que ta indo errado!! Vou pegar o exemplo dos colegas aqui no forum, ja que gerar essas classes pelo Axis deixa bem complicado de se entender!
não seria mais facil você gerar o acesso ao wsdl usando axis2 ?
fica bem facil de usar…
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!
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?
Vlw Galera, consegui ja implementar pelo axis 2!! Vlw pela forca de todos!
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
vanderlsilva , como vc gerou suas classes? usou Axis 2?
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!
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…
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
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!