Webservices SOAP 1.2 Header[Resolvido]

Ola pessoal, ja vim aqui por varias vezes com uma duvida sobre como passar o header no SOAP 1.2 usando o jax-ws, muitos aqui migraram pro Axis2 mas não é meu caso, preciso fazer com o jax-ws então vamos venho a perguntar aos feras do java como poso resolver isso:

meus métodos de conumo ao web service:

   @WebServiceRef(wsdlLocation = "file:/.../NFeStatusServico2.wsdl")
   br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2 webServiceClient = null;

   @Override
   protected Object getResponse(String nfeDadosMsg) throws Problem {
        try {

            NfeStatusServicoNF2Result nfeStatusServicoNF2Result = null;
            webServiceClient = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2();
            System.out.println("Coletando a porta do servico: " + webServiceClient);

            // Tentei  reolver o problema colocando um handler que insere um header no soap mas não funcionou:
            //            webServiceClient.setHandlerResolver(new HandlerResolver() {
            //            @Override
            //            public List<Handler> getHandlerChain(PortInfo portInfo) {
            //                List<Handler> handlers = new ArrayList<Handler>();
            //                handlers.add(new NfeStatusServico2Handler());
            //                return handlers;
            //                }
            //            });

            br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2Soap12 port = webServiceClient.getNfeStatusServico2Soap12();
            System.out.println("Porta SOAP que esta sendo invocada: " + port);
            br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeCabecMsg nfeCabecMsg = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeCabecMsg();
            nfeCabecMsg.setCUF("43");
            nfeCabecMsg.setVersaoDados("2.00");

            //            WSBindingProvider bp = (WSBindingProvider) port;
            //            bp.setOutboundHeaders(Headers.create(new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"), "SOAPAction"));

            System.out.println("***");
            System.out.println("DadosCTE: " + nfeDadosMsg.toString());
            System.out.println("***");
   
            NfeDadosMsg nfeDadosMsg1 = new NfeDadosMsg();

//            // add nfeCabebc na nfeDadosMsg, isso faz o header ir para dentro do body o que não é o caso ja que um header fica dentro da tag <S:Envelope e tambem o //body
//            nfeDadosMsg1.getContent().add(new ObjectFactory().createNfeCabecMsg(nfeCabecMsg));

            nfeDadosMsg1.getContent().add(nfeDadosMsg);
  
          br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServicoNF2Result result = port.nfeStatusServicoNF2(nfeDadosMsg1);

            System.out.println("Resposta do servico: " + nfeStatusServicoNF2Result.getContent().toString());
            System.out.println("Result = " + result);
            System.out.println("Resposta = " + Arrays.toString(result.getContent().toArray()));
            return getBeanFromString(new RetConsStatServ(), nfeStatusServicoNF2Result.getContent().toString());

        } catch (SOAPException ex) {
            Logger.getLogger(WebServiceStatus.class.getName()).log(Level.SEVERE, null, ex);
        } catch (MalformedURLException ex) {
            Logger.getLogger(WebServiceStatus.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }

agora vou mostrar o log do meu SOAP:

INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/web] has already been started
Coletando a porta do servico: br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2@523df
Porta SOAP que esta sendo invocada: JAX-WS RI 2.1.1 in JDK 6: Stub for https://homologacao.nfe.sefaz.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx
***
DadosCTE: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><cUF>43</cUF><xServ>STATUS</xServ></consStatServ>
***
---[HTTP request]---
SOAPAction: ""
Accept: application/soap+xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-Type: application/soap+xml; charset=utf-8;action="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2"
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
   <S:Body>
      <nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
         &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;&lt;consStatServ xmlns=&quot;http://www.portalfiscal.inf.br/nfe&quot; versao=&quot;2.00&quot;&gt;&lt;tpAmb&gt;2&lt;/tpAmb&gt;&lt;cUF&gt;43&lt;/cUF&gt;&lt;xServ&gt;STATUS&lt;/xServ&gt;&lt;/consStatServ&gt;</nfeDadosMsg>
   </S:Body>
</S:Envelope>--------------------
---[HTTP response 500]---
null: HTTP/1.1 500 Internal Server Error
Cache-control: private
Content-type: application/soap+xml; charset=utf-8
Content-length: 618
X-powered-by: ASP.NET
Server: Microsoft-IIS/6.0
Date: Thu, 13 May 2010 18:45:56 GMT
X-aspnet-version: 2.0.50727
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
        <soap:Fault>
           <soap:Code>
               <soap:Value>soap:Sender</soap:Value>
           </soap:Code>
               <soap:Reason>
                   <soap:Text xml:lang="en">Server was unable to read request. ---&gt; There is an error in XML document (1, 483).
 ---&gt; The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type.
                   </soap:Text>
               </soap:Reason><soap:Detail />
        </soap:Fault>
   </soap:Body>
</soap:Envelope>--------------------

por favor alguem que tenha implementado com o jaxws me ajuda a resolver esse rolo ?
notem que o soapAcation est vazio SOAPAction: “”
se eu adicionar o nfeCabec dentro do body ele da não da essa menssagem de que os dados estão do tipo errado, ele reclama que falta o cabeçalho dando erro 242 que é referente a falta do cabeçalho, bem é isso, abraços.

Pessoal após muito luta cosegui colocar o header no SOAP 1.2 usando JAX-WS e estou recebendo a resposta da sefaz, mas na resposta diz que meus dados estão de forma erra e eu acredito que é porque passo uma String no NfeDadosMsg pois la dentro do soap minha String se altera

era para ser assim: <tpAmb>2</tpAmb>

e fica assim: & lt;tpAmb& gt;2& lt;/tpAmb& gt

sera que é por isso que a menssagem no soap me retorna dizendo que os dados estão errados ? se for por causa do scape como faço pra passar esse xml la dentro pois no manual diz: tipod e dado xml mas para min passar um xml sera uma string em forma de xml ? estou errado em pensar assim ?

Log do meu soap o que stou enviando:

<?xml version=“1.0” ?>
<S:Envelope xmlns:S=“http://www.w3.org/2003/05/soap-envelope”>
<S:Header>
<nfeCabecMsg xmlns=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2”>
<cUF>43</cUF>
<versaoDados>2.00</versaoDados>
</nfeCabecMsg>
</S:Header>
<S:Body>
<nfeDadosMsg xmlns=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2”>
& lt;?xml version=& quot;1.0& quot; encoding=& quot;UTF-8& quot; standalone=& quot;yes& quot;?
&g t;& lt;consSitNFe xmlns=& quot;http://www.portalfiscal.inf.br/nfe& quot; versao=& quot;2.00& quot;& gt;
& lt;tpAmb& gt;2& lt;/tpAmb& gt;
& lt;xServ& gt;CONSULTAR& lt;/xServ>
& lt;chNFe& gt;43100391250902000131550010001128780001128786& lt;/chNFe& gt;
& lt;/consSitNFe& gt;
</nfeDadosMsg>
</S:Body>
</S:Envelope>--------------------

Veja a resposta:

<?xml version=“1.0” encoding=“utf-8”?>
<soap:Envelope xmlns:soap=“http://www.w3.org/2003/05/soap-envelope
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<soap:Body>
<soap:Fault>
<soap:Code>
<soap:Value>soap:Sender</soap:Value>
</soap:Code>
<soap:Reason>
<soap:Text xml:lang=“en”>Server was unable to read request. —> There is an error in XML document (1, 676). —>
The specified node cannot be inserted as the valid child of this node, because the specified node is the wrong type.
</soap:Text>
</soap:Reason>
<soap:Detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>--------------------

Eu tentei usar o Jax para os WS, mas tive o mesmo problema de não conseguir usar o cabeçalho

como vc vez?

a unica diferença do seu para o meu é a declaração dentro do xml dentro do soap

eu não tenho isso

[quote=zoren]Eu tentei usar o Jax para os WS, mas tive o mesmo problema de não conseguir usar o cabeçalho

como vc vez?

a unica diferença do seu para o meu é a declaração dentro do xml dentro do soap

eu não tenho isso[/quote]

Zorem não sei porque irmão mas de alguma forma quando se usa o wsgen ou o proprio netbeans para gerar os stubs com o JAX-WS ele não gera de forma correta
um exemplo disso é a classe do stub: NfeConsulta2Soap12.java, que só recebe um parametro nfeDadosMsg com vc pode notar, e se vc fizer isso como muitos fizeram:
nfeDadosMsg.getContente().add(new ObjectFacotry().getContent().add(nfeCabecMsg)) o cabeçalho vai parar dentro do body o que é errado, então acredito que a solução( ainda não testei) seria gerar os stubs com um ant

package br.inf.portalfiscal.nfe.wsdl.nfeconsulta2;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.Holder;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.7-b01-
 * Generated source version: 2.1
 *
 */
@WebService(name = "NfeConsulta2Soap12", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
    ObjectFactory.class
})
public interface NfeConsulta2Soap12 {


    /**
     *
     * @param nfeDadosMsg
     * @return
     *     returns br.inf.portalfiscal.nfe.wsdl.nfeconsulta2.NfeConsultaNF2Result
     */
    @WebMethod(action = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2/nfeConsultaNF2")
    @WebResult(name = "nfeConsultaNF2Result", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2", partName = "nfeConsultaNF2Result")
    public NfeConsultaNF2Result nfeConsultaNF2(
        @WebParam(name = "nfeDadosMsg", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2", partName = "nfeDadosMsg")
        NfeDadosMsg nfeDadosMsg,        
}

então zorem coloquei o método que faltava na munheca, que não esta sendo gerado pelo netbeans e nem pelo wsgen via DOS ou SHELL, ai apenos contruo o jar não da pra usar clean and build porque el vai apagar o que vc fez, apenas construo e uso de forma normal, abaixo a modificação necessaria para passar o header como parametro junto na classe que consome o webservice:

package br.inf.portalfiscal.nfe.wsdl.nfeconsulta2;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.Holder;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.7-b01-
 * Generated source version: 2.1
 *
 */
@WebService(name = "NfeConsulta2Soap12", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@XmlSeeAlso({
    ObjectFactory.class
})
public interface NfeConsulta2Soap12 {


    /**
     *
     * @param nfeCabecMsg
     * @param nfeDadosMsg
     * @return
     *     returns br.inf.portalfiscal.nfe.wsdl.nfeconsulta2.NfeConsultaNF2Result
     */
    @WebMethod(action = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2/nfeConsultaNF2")
    @WebResult(name = "nfeConsultaNF2Result", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2", partName = "nfeConsultaNF2Result")
    public NfeConsultaNF2Result nfeConsultaNF2(
        @WebParam(name = "nfeDadosMsg", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2", partName = "nfeDadosMsg")
        NfeDadosMsg nfeDadosMsg,
        @WebParam(name = "nfeCabecMsg", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2", header = true, mode = WebParam.Mode.INOUT, partName = "nfeCabecMsg")
        Holder<NfeCabecMsg> nfeCabecMsg);

}

Não havia pensado em fazer isso,

eu testei muitas vezes pra tentar tirar o axis, pq tem muito jar e a aplicação fica muito grande, vo fazer um teste com essa sua solução

Vlw

Eu quase fiz uma classe para trabalhar com o SOAP, mas tive problemas em pegar o conteúdo do body

mas eu cheguei a enviar o SOAP na raça, pq eu n descobria o erro, ai eu fiquei modificando até achar onde o axis estava gerando diferente.

Ai gurizada consegui o Status de OK na NF-e 2.0 usando JAX-WS, SOAP 1.2 passando Header e Body dentro do envelope Soap se alguem quiser saber como é basta me mandar um email, abraços.

---[HTTP request]---
SOAPAction: ""
Accept: application/soap+xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-Type: application/soap+xml; charset=utf-8;action="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2"
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
   <S:Header>
      <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
         <cUF>43</cUF>
         <versaoDados>2.00</versaoDados>
      </nfeCabecMsg>
   </S:Header>
   <S:Body>
      <nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
         <consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
            <tpAmb>2</tpAmb>
            <cUF>43</cUF>
           <xServ>STATUS</xServ>
         </consStatServ>
      </nfeDadosMsg>
   </S:Body>
</S:Envelope>--------------------
---[HTTP response 200]---
null: HTTP/1.1 200 OK
Cache-control: private, max-age=0
Content-type: application/soap+xml; charset=utf-8
Content-length: 797
X-powered-by: ASP.NET
Server: Microsoft-IIS/6.0
Date: Thu, 20 May 2010 22:31:27 GMT
X-aspnet-version: 2.0.50727
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Header>
      <nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
         <cUF>43</cUF>
         <versaoDados>2.00</versaoDados>
      </nfeCabecMsg>
   </soap:Header>
   <soap:Body>
      <nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
         <retConsStatServ versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
            <tpAmb>2</tpAmb>
            <verAplic>RS20100210143458</verAplic>
            <cStat>107</cStat>
            <xMotivo>Servico em Operacao</xMotivo>
            <cUF>43</cUF>
            <dhRecbto>2010-05-20T19:31:27</dhRecbto>
            <tMed>1</tMed>
         </retConsStatServ>
      </nfeStatusServicoNF2Result>
   </soap:Body>
</soap:Envelope>--------------------

Como você fez para colocar o xml no corpo do SOAP?

Eu também tentei passar o XML inteiro mas deu o mesmo erro que o seu, ai tentei usando um XMLReader do java e nada também.

[quote=zoren]Como você fez para colocar o xml no corpo do SOAP?

Eu também tentei passar o XML inteiro mas deu o mesmo erro que o seu, ai tentei usando um XMLReader do java e nada também.[/quote]

é simples Zorem, vc deve estar passando uma String no body do SOAP, e não é isso que pedi ele pedi um xml logo você precisa trabalhar com os nós do xml, abaixo tem o método que fiz pra isso, qualquer duvida só perguntar, abraços.

public class Main {

	private static NfeStatusServicoNF2Result nfeConsultaNF2;

	public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, IOException, CertificateException {

		System.setProperty("com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump", "true");

		ajustaSslCertificadoA1();

		NfeStatusServico2Soap12 consulta = new NfeStatusServico2().getNfeStatusServico2Soap12();

		NfeDadosMsg nfeDadosMsg = createNfeDadosMsg();

		Holder<NfeCabecMsg> nfeCabecMsg = new Holder<NfeCabecMsg>(createNfeCabecMsg());

		nfeConsultaNF2 = consulta.nfeStatusServicoNF2(nfeDadosMsg, nfeCabecMsg);


	}

	private static NfeDadosMsg createNfeDadosMsg() {
		NfeDadosMsg dadosMsg = new NfeDadosMsg();

		ConsStatServ consStatServ = new ConsStatServ();
		consStatServ.setCUF(43);
		consStatServ.setTpAmb(2);
		consStatServ.setXServ("STATUS");

		dadosMsg.getContent().add(consStatServ);

		return dadosMsg;
	}

	private static NfeCabecMsg createNfeCabecMsg() {
		NfeCabecMsg cabecMsg = new NfeCabecMsg();

		cabecMsg.setCUF("43");
		cabecMsg.setVersaoDados("2.00");

		return cabecMsg;
	}

	public static void ajustaSslCertificadoA1() {
		System.setProperty("javax.net.ssl.trustStoreType", "JKS");
		System.setProperty("javax.net.ssl.trustStore", "homologacao_nfe_sefaz_rs_gov_br");

		Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
		System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
		System.setProperty("javax.net.ssl.keyStore", "certificado.pfx");
		System.setProperty("javax.net.ssl.keyStorePassword", "senha_doCertificado");
	}

}

NO método ObjectFactory dos stubs tambem coloquei uma chamada para o ConsStatServ

    /**
     * Create an instance of {@link ConsStatServ }
     * 
     */
    public ConsStatServ createConsStatServ() {
        return new ConsStatServ();
    }

e na Classe que faz a consulta do Status eu fiz testes com a classe gerada através do xjc não deu certo pois dava erro na estrutura do xml devido aos atributos
então eu fiz meus beans todos na mão usando anotations do JAXB, segue a classe:

package br.inf.portalfiscal.nfe.wsdl.nfestatusservico2;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @author Dilnei Cunha
 * Consulta do status do servico
 */
@XmlRootElement(name = "consStatServ")
@XmlAccessorType(XmlAccessType.FIELD)
public class ConsStatServ {

    /**
     * Versao do leiaute.
     */
    @XmlAttribute
    private String versao;
 
   /**
     * namespace
     */
    @XmlAttribute
    private String xmlns;

    /**
     * Identificacao do Ambiente:
     * 1 - Producao / 2 - Homologacao
     */
    @XmlElement(name = "tpAmb")
    private Integer tpAmb = 2;

    /**
     * Codigo da UF consultada.
     */
    @XmlElement(name = "cUF")
    private Integer cUF;

    /**
     * Servicos solicitado 'STATUS'.
     */
    @XmlElement(name = "xServ")
    private String xServ;

    public ConsStatServ() {
        versao = "2.00";
        xmlns = "http://www.portalfiscal.inf.br/nfe";
        xServ = "STATUS";
    }


    public Integer getCUF() {
        return cUF;
    }

    public void setCUF(Integer cUF) {
        this.cUF = cUF;
    }

    public Integer getTpAmb() {
        return tpAmb;
    }

    public void setTpAmb(Integer tpAmb) {
        this.tpAmb = tpAmb;
    }

    public String getXServ() {
        return xServ;
    }

    public void setXServ(String xServ) {
        this.xServ = xServ;
    }

    public String getVersao() {
        return versao;
    }

    public void setVersao(String versao) {
        this.versao = versao;
    }

}

Você utilizou qual classe para trabalhar com o nós do XML?

Apenas passando o objeto TConsStatServ e colocando a chamada dele no ObjectFactory dos stubs, para de dar erro, mas a resposta vem null.

[quote=zoren]Você utilizou qual classe para trabalhar com o nós do XML?

Apenas passando o objeto TConsStatServ e colocando a chamada dele no ObjectFactory dos stubs, para de dar erro, mas a resposta vem null.[/quote]

me da seu email que te envio um projeto java fazendo a consulta ai vc vai entender melhor, para poder adaptar pro seu sistema, e se mesmo assim não der me mostra suas classes que tendo ajudar, abraços

dilneicunha@gmail.com

manda pra mim também que estou perdidão nestes parte de web service …da nfe… leopoldof@bol.com.br

Olá,

Também estou com problemas para conectar com o webservice 2.0 da NFe.
Por gentileza, pode também enviar o exemplo para que eu possa rodar em debug e compreender seu funcionamento ?

Email: marlo@ytrio.com.br

Desde já agradeço !

Obrigado !

Amigo, não sei se ainda dá tempo, mas esta nfe 2.0 não funciona como esperava… vc também pode me enviar os exemplos de como fez para consumir os webservices? obrigado.
marcelomrwin@gmail.com

Amigo, tambem estou quebrando a cabeça com NFe 2.00 usando JAX-WS, vc poderia encaminhar no e-mail sisclaudio@gmail.com, um exemplo das classes que vc conseguiu resolver este problema.

Att, Claudio!

tb estou quebrando a cabeça com essa nfe 2.0, se puderes me mandar um exemplo de consultanfe2 emal: jbrasilio2004@yahoo.com.br

oi pessoal eu tambe mesto uquebrando a cabeça aqui, obrigado, rogeriouit@hotmail.com

Olá pessoal, também estou quebrando a cabeça… não estou conseguindo pedir a autorização da nfe. Podem me mandar um exemplo? daniel_atsoc@hotmail.com

Abs,

Daniel

Pessoal,

Estou com o mesmo problema. Aix, meu XML está sendo exibido da mesma forma que você passou, porem com o código:

            System.out.println("Result = " + result);
            System.out.println("Resposta = " + Arrays.toString(result.getContent().toArray()));

ele me dá o seguinte retorno:

Result = br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.nlphd.NfeStatusServicoNF2Result@1f1680f
Resposta = [[retConsStatServ: null], ]

isso é normal?

Como vcs resolveram.

Obrigado.

pessoal estou com um problema, eu consigo transmitir a nota fiscal, mais a assinatura esta invalida, nao consigo achar o esso
esse é o xml
1000000000006203100241973VENDA DE MERCADORIA ADQUIRIDA OU RECEBIDA DE TERCEIROS QUE N05511442010-12-232010-12-2313106200111210INTEGRADOR GESTOR71421077000183SOMICRO SERVIDOR 1SOMICRO SERVIDOR 2RUA CATETE9998 andarBARROCA3106200BELO HORIZONTEMG302603901058BRASIL0629332510066133981937000144AGAFLORESCATETEBELO HORIZONTEBARROCA3106200BELO HORIZONTEMG1058BRASIL20PLACA DE VIDEO123456785102UN1.0000100.0000100.00UN1.0000100.0000104107070.000.000.000.00100.000.000.000.000.000.000.000.000.00100.000YB+PYdHHXZ5UxvNxxnYuBR1XwkQ=YHvNHfEhSw3IiuLd4479x82QRlXoboBS8NFlInIJsDCFZpQZMpRVMdjVcOr1yCU4DK3BSNtDxxRI
jpKtEpD0Sd9x673s37zTiL5RQdTN7PGqlfARnED3BmIeDrj++jcwb0lVaSjkGzkcTQJGtyucdkAm
WA5/ET5YiALJ2Rug+nU=MIIGJDCCBQygAwIBAgIIKYFH7VIS3nUwDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UEBhMCQlIxEzAR
BgNVBAoTCklDUC1CcmFzaWwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwg
djEwHhcNMTAwMzI1MTEwMDAwWhcNMTMwMzI0MTEwMDAwWjCB4zELMAkGA1UEBhMCQlIxEzARBgNV
BAoTCklDUC1CcmFzaWwxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRgwFgYDVQQLEw8wMDAwMDEwMDA5
NjkzMTMxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UE
CxMLKEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNP
KTEhMB8GA1UEAxMYU09NSUNSTyBJTkZPUk1BVElDQSBMVERBMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQCVRx9DKPxykWx8yYuWv7AMqv1YnZqUdQMKgqSvd1neXP+gnS0pkA3/lxNsIN6rSGIJ
RSSdfBc5VEq82Tt2Wpzcw2lBOtGSeIw3Jp45T3EfzrSHhIpUqD6OUkB2H4IjYk/517uGi/m8QkoW
7nH6ckTDINI6czABW8B5QcaNAXW22QIDAQABo4IC9DCCAvAwDgYDVR0PAQH/BAQDAgXgMB0GA1Ud
JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAfBgNVHSMEGDAWgBS3YKhb+bKmrgDtdOvVSsmWaGb1
XDCBtwYDVR0RBIGvMIGsgRdHRVJFTkNJQUBTT01JQ1JPLkNPTS5CUqA4BgVgTAEDBKAvEy0yMzA2
MTk2ODUxMzA5NzUwNjUzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDCgIwYFYEwBAwKgGhMYSkFR
VUVTIE1BUkNPTkUgREUgQVJBVUpPoBkGBWBMAQMDoBATDjcxNDIxMDc3MDAwMTgzoBcGBWBMAQMH
oA4TDDAwMDAwMDAwMDAwMDBXBgNVHSAEUDBOMEwGBmBMAQIDAzBCMEAGCCsGAQUFBwIBFjRodHRw
Oi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvcmVwb3NpdG9yaW8vZHBjMIHwBgNVHR8E
gegwgeUwSaBHoEWGQ2h0dHA6Ly93d3cuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5ici9yZXBvc2l0
b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwQ6BBoD+GPWh0dHA6Ly9sY3IuY2VydGlmaWNhZG9zLmNv
bS5ici9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwU6BRoE+GTWh0dHA6Ly9yZXBvc2l0
b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9TZXJhc2EvcmVwb3NpdG9yaW8vbGNyL3NlcmFzYWNk
djEuY3JsMIGXBggrBgEFBQcBAQSBijCBhzA8BggrBgEFBQcwAYYwaHR0cDovL29jc3AuY2VydGlm
aWNhZG9kaWdpdGFsLmNvbS5ici9zZXJhc2FjZHYxMEcGCCsGAQUFBzAChjtodHRwOi8vd3d3LmNl
cnRpZmljYWRvZGlnaXRhbC5jb20uYnIvY2FkZWlhcy9zZXJhc2FjZHYxLnA3YjANBgkqhkiG9w0B
AQUFAAOCAQEALsOHlJmf9s2yZVPLmW8O3nqBh0+jmxy0MNdkA0IpeadtSfWJ7dMcnYw6ak67eUnf
UHk8AsOg4p8RyYF5xEcTfWdt5IpcS4vkZlplqVChHuYeGgzsn/L6aVZme1Nu9331sfts6wZNSk33
HqBVJ8Fx2CGyWmfJcAWKxXA+JC4mSDiAbCQS4W2Y0YEk9p25ePNRhIIveuKXa+agCIJZwUMqXqyv
qxkVpp9HIRQlXT8uLsjrqJLlzl51O5e+xojRHLj3vOVmStRkVIHwcTrCQk2RmJZLmtHlbX6E4Y2Z
Q+sn5QrcJiNfBcRWB0ssZ+EENgEbc1SgeXk+vKdqRVwYtu1gAQ==

e essa é a minha msg SOAP

<?xml version="1.0" ?>312.001000000000006203100241973VENDA DE MERCADORIA ADQUIRIDA OU RECEBIDA DE TERCEIROS QUE N05511442010-12-232010-12-2313106200111210INTEGRADOR GESTOR71421077000183SOMICRO SERVIDOR 1SOMICRO SERVIDOR 2RUA CATETE9998 andarBARROCA3106200BELO HORIZONTEMG302603901058BRASIL0629332510066133981937000144AGAFLORESCATETEBELO HORIZONTEBARROCA3106200BELO HORIZONTEMG1058BRASIL20PLACA DE VIDEO123456785102UN1.0000100.0000100.00UN1.0000100.0000104107070.000.000.000.00100.000.000.000.000.000.000.000.000.00100.000YB+PYdHHXZ5UxvNxxnYuBR1XwkQ=YHvNHfEhSw3IiuLd4479x82QRlXoboBS8NFlInIJsDCFZpQZMpRVMdjVcOr1yCU4DK3BSNtDxxRI

jpKtEpD0Sd9x673s37zTiL5RQdTN7PGqlfARnED3BmIeDrj++jcwb0lVaSjkGzkcTQJGtyucdkAm
WA5/ET5YiALJ2Rug+nU=MIIGJDCCBQygAwIBAgIIKYFH7VIS3nUwDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UEBhMCQlIxEzAR
BgNVBAoTCklDUC1CcmFzaWwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwg
djEwHhcNMTAwMzI1MTEwMDAwWhcNMTMwMzI0MTEwMDAwWjCB4zELMAkGA1UEBhMCQlIxEzARBgNV
BAoTCklDUC1CcmFzaWwxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRgwFgYDVQQLEw8wMDAwMDEwMDA5
NjkzMTMxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UE
CxMLKEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNP
KTEhMB8GA1UEAxMYU09NSUNSTyBJTkZPUk1BVElDQSBMVERBMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQCVRx9DKPxykWx8yYuWv7AMqv1YnZqUdQMKgqSvd1neXP+gnS0pkA3/lxNsIN6rSGIJ
RSSdfBc5VEq82Tt2Wpzcw2lBOtGSeIw3Jp45T3EfzrSHhIpUqD6OUkB2H4IjYk/517uGi/m8QkoW
7nH6ckTDINI6czABW8B5QcaNAXW22QIDAQABo4IC9DCCAvAwDgYDVR0PAQH/BAQDAgXgMB0GA1Ud
JQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAfBgNVHSMEGDAWgBS3YKhb+bKmrgDtdOvVSsmWaGb1
XDCBtwYDVR0RBIGvMIGsgRdHRVJFTkNJQUBTT01JQ1JPLkNPTS5CUqA4BgVgTAEDBKAvEy0yMzA2
MTk2ODUxMzA5NzUwNjUzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDCgIwYFYEwBAwKgGhMYSkFR
VUVTIE1BUkNPTkUgREUgQVJBVUpPoBkGBWBMAQMDoBATDjcxNDIxMDc3MDAwMTgzoBcGBWBMAQMH
oA4TDDAwMDAwMDAwMDAwMDBXBgNVHSAEUDBOMEwGBmBMAQIDAzBCMEAGCCsGAQUFBwIBFjRodHRw
Oi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvcmVwb3NpdG9yaW8vZHBjMIHwBgNVHR8E
gegwgeUwSaBHoEWGQ2h0dHA6Ly93d3cuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5ici9yZXBvc2l0
b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwQ6BBoD+GPWh0dHA6Ly9sY3IuY2VydGlmaWNhZG9zLmNv
bS5ici9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwU6BRoE+GTWh0dHA6Ly9yZXBvc2l0
b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9TZXJhc2EvcmVwb3NpdG9yaW8vbGNyL3NlcmFzYWNk
djEuY3JsMIGXBggrBgEFBQcBAQSBijCBhzA8BggrBgEFBQcwAYYwaHR0cDovL29jc3AuY2VydGlm
aWNhZG9kaWdpdGFsLmNvbS5ici9zZXJhc2FjZHYxMEcGCCsGAQUFBzAChjtodHRwOi8vd3d3LmNl
cnRpZmljYWRvZGlnaXRhbC5jb20uYnIvY2FkZWlhcy9zZXJhc2FjZHYxLnA3YjANBgkqhkiG9w0B
AQUFAAOCAQEALsOHlJmf9s2yZVPLmW8O3nqBh0+jmxy0MNdkA0IpeadtSfWJ7dMcnYw6ak67eUnf
UHk8AsOg4p8RyYF5xEcTfWdt5IpcS4vkZlplqVChHuYeGgzsn/L6aVZme1Nu9331sfts6wZNSk33
HqBVJ8Fx2CGyWmfJcAWKxXA+JC4mSDiAbCQS4W2Y0YEk9p25ePNRhIIveuKXa+agCIJZwUMqXqyv
qxkVpp9HIRQlXT8uLsjrqJLlzl51O5e+xojRHLj3vOVmStRkVIHwcTrCQk2RmJZLmtHlbX6E4Y2Z
Q+sn5QrcJiNfBcRWB0ssZ+EENgEbc1SgeXk+vKdqRVwYtu1gAQ==</S:Body></S:Envelope>

por favor, me ajudem,obrigado

Utilizando a ferramenta wsimport para gerar as classes Java à partir do WSDL, é possível gerar uma classe que receba o cabeçalho como argumento. Contudo, é necessário informar o parâmetro -XadditionalHeaders.

/**
 * NfeStatusServico2 (versão 2.00)
 */

// Sem -XadditionalHeaders
@WebMethod(action = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2")
@WebResult(name = "nfeStatusServicoNF2Result", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", partName = "nfeStatusServicoNF2Result")
public NfeStatusServicoNF2Result nfeStatusServicoNF2(
	@WebParam(name = "nfeDadosMsg", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", partName = "nfeDadosMsg")
        NfeDadosMsg nfeDadosMsg);

// Com -XadditionalHeaders
@WebMethod(action = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2")
@WebResult(name = "nfeStatusServicoNF2Result", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", partName = "nfeStatusServicoNF2Result")
public NfeStatusServicoNF2Result nfeStatusServicoNF2(
	@WebParam(name = "nfeDadosMsg", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", partName = "nfeDadosMsg")
        NfeDadosMsg nfeDadosMsg,
        @WebParam(name = "nfeCabecMsg", targetNamespace = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", header = true, mode = WebParam.Mode.INOUT, partName = "nfeCabecMsg")
        Holder<NfeCabecMsg> nfeCabecMsg));

Perceba que no segundo trecho, é possível informar o cabeçalho como segundo parâmetro da chamada do serviço.

Para aqueles que configuraram a tarefa no Ant, segue um trecho de exemplo:

<wsimport wsdl="arquivo.wsdl" destdir="bin/" sourcedestdir="src/" package="br.com.nfe.servicos" extension="true" xadditionalHeaders="true" verbose="true" />

Para quem utiliza a linha de commando, utilize o wsimport com os comandos a seguir:

wsimport -d bin -extension -XadditionalHeaders -keep -s src -verbose arquivo.wsdl -p br.com.nfe.servicos

Importante: Utilize os métodos do ObjectFactory para criar os objetos de serviço e os JAXBElements. Esta classe tem várias configurações de namespace que são importantes.