Consumo consulta Serviço por SOAP não funciona

Fala folks, estou fazendo uma aplicação para consultar o status do serviço e preciso que ela seja somente em soap, não podendo utilizar aquelas classes Stubs que são geradas pelos arquivos wsld.

Então estou utilizando o código abaixo:

package br.com.eitconsultas.service;

import br.com.eit.DummyConnector;
import br.com.eitconsultas.usefull.Certificado;
//import com.sap.conn.jco.util.Codecs.Base64;
import java.io.ByteArrayInputStream;
import java.io.StringWriter;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.soap.*;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.codec.binary.Base64;

/**
 * Classe responsavel por consumir o Webservice da Sefaz.
 *
 * @author Dilnei Cunha.
 */
public class WSConsultaProtocolo_1 {

    /**
     * Método responsavel por consultar e trzer o retorno da consutla.
     *
     * @return
     */
    public static String retConsultaProtocolo_1() throws Throwable {

        // Debug. 
//        System.setProperty("javax.net.debug", "all");

        // Configuro o certificado.

        Certificado.ler();

        // Pego o código da UF.

        String urlAdders = null;

        urlAdders = "https://nfe.fazenda.mg.gov.br/nfe2/services/NfeConsulta2";

        // Crio uma instancia de String Builder, para criar o envelope SOAP.
        StringBuilder soapMessage = new StringBuilder();


        urlAdders = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx";

        soapMessage.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
                .append("<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\">")
                .append("<soap12:Header>")
                .append("<nfeCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">")
                .append("<cUF>")
                .append("35")
                .append("</cUF>")
                .append("<versaoDados>1.00</versaoDados>")
                .append("</nfeCabecMsg>")
                .append("</soap12:Header>")
                .append("<soap12:Body>")
                .append("<nfeStatusServicoNF2 xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">")
                .append("<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
                .append("<consStatServ versao=\"1.07\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.portalfiscal.inf.br/nfe\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
                .append("<versao>1.07</versao>")
                .append("<tpAmb>2</tpAmb>")
                .append("<cUF>35</cUF>")
                .append("<xServ>STATUS</xServ>")
                .append("</consStatServ>")
                .append("</nfeDadosMsg>")
                .append("</nfeStatusServicoNF2>")
                .append("</soap12:Body>")
                .append("</soap12:Envelope>");


        MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);

        // Configuro os headers.
        MimeHeaders header = new MimeHeaders();
        header.addHeader("Content-Type", "application/soap+xml");

        // Crio a mensagem.
//        System.out.println(soapMessage.toString());
        SOAPMessage message = factory.createMessage(header, new ByteArrayInputStream(soapMessage.toString().getBytes()));

        // Crio a conexão.
        SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection();

        // Configuro a URL.
        URL url = new URL(urlAdders);


        // Chamando o serviço.
        SOAPMessage res = con.call(message, url);

        // Fecho a conexão.
        con.close();

        // Armazeno o retorno da sefaz.
        StringWriter sw = new StringWriter();
        Source source = new DOMSource(res.getSOAPPart().getEnvelope().getBody().getFirstChild().getFirstChild());
        TransformerFactory.newInstance().newTransformer().transform(source, new StreamResult(sw));
        String retConsSitNFe = sw.toString();
        return retConsSitNFe;
    }
}

E recebo 2 erros:

 ...Caused by: javax.xml.transform.TransformerException: org.xml.sax.SAXException: NAMESPACE_ERR: Houve uma tentativa de criar ou alterar um objeto de uma forma incorreta em relação aos namespaces.
org.w3c.dom.DOMException: NAMESPACE_ERR: Houve uma tentativa de criar ou alterar....

utilizando a opção de debug:

  System.setProperty("javax.net.debug", "all");

encontrei o real motivo desse problema (eu acho…):

 xml:lang="en">U
nable to handle 
request without 
a valid action p
arameter. Please
 supply a valid 
soap action.</so
ap:Text></soap:R
eason><soap:Deta
il /></soap:Faul
t></soap:Body></
soap:Envelope>..

Será que existe um santo neste forum que poderia me ajudar? Preciso que seja somente soap pois esta app java teria
somente que executar o xml

Obrigado pessoal!