NFSe Foz do Iguaçu

14 respostas
C

Bom dia, gostaria de saber se alguem já desenvolveu a NFSe para foz do iguaçu,

Alguem possui um XML assinado de Exemplo? pois entrei em contato com a prefeitura e a empresa que desenvolve o WebService
e simplismente ninguem responde.

Inicialmente consegui algumas respostas porém agora não consigo mais contato.

Em um destes contatos, pedi para a empresa um xml de exemplo, porém ao enviar este xml, deu erro de validação no Schema, ou seja, nem o XML
enviados por eles está validando, pensei que possa ser porque este arquivo não está assinado, pedi para a empresa um XML assinado.

Caso alguem tenha um XML assinado para me passar, para que eu possa realizar os testes na base de homologação, pois estou travado nesta parte de validação do XML.
A rotina já está comunicando com o Webservice, só que nesta comunicação ele da erro na validação do XML.

14 Respostas

J

Se não me engano você tem que ter um certificado válido pra poder fazer testes.
Não tem como você usar um Xml assinado com certificado de outra empresa nem pra fazer testes.

P

Se não me engano você tem que ter um certificado válido pra poder fazer testes.
Não tem como você usar um Xml assinado com certificado de outra empresa nem pra fazer testes.

isso msm.

espero q ajude:
http://www.guj.com.br/java/237281-tutorial-consumir-webservice-nfe-20

att,

C

Teoricamente, com qualquer certificado digital, você consegue acessar o WSDL (WebService),e então na transmissão ele vai ocorrer o erro que o certificado não é valido.
Já estou comunicando e transmitindo para a prefeitura, e ao retornar uma mensagem, esté retornando o erro de validação do schema, como se o xml enviado estivesse errado.

Caso alguem já tenha conseguido gerar um xml para foz do iguaçu/Pr ou tiver alguma sugestão agradeço.

Obrigado aos posts anteriores, verifiquei o topico da NFe e estou consumindo o Webservice, só que como é para NFSe é um pouco diferente…

Até mais Muito Obrigado.

D

Posta o XML que provavelmente posso te ajudar.

C

Segue um dos XML’s de teste.

<?xml version="1.0" encoding="ISO-8859-1"?> 2574 01470311000133 0020071 1 1084 X2 1 2011-06-01T12:00:00 3 2 1 1 1 133.00 0.00 0.00 0.00 0.00 26.60 0.00 2 0.00 0.00 133.00 0.0000 75.03 0.00 4 6204000 4.04 Procedimento : VISITA DOMICILIAR POR PROFESSIONAL DE NIVEL M testeProcedimento : Adenoidectomia testeProcedimento : Bloqueio Intercostal teste Serie regra: 01 4202404 01950338000177 0060193 [telefone removido] PESSOA TESTE 0 OOln0b4I2LsLK15Ehkc56mAMLo8= dfZydXPueESuNXAqliuQ0nY157ch5KlipbX8FRbFEV9lEGlaqFBae4KZbgsPw58/1+H1S6+p/PjU qc0jWhK6eJnQkdnBPaqlNICbKslStLMwHTEdEJ8GJgxt3Xgo5d8eNAbiUKz8wAhaZhUVptSDTjIP afWdo+dCPwYyt8U4yTE= MIIGvjCCBaagAwIBAgIQMUXQVEQHMg/481gBNgigiTANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQG EwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEtMCsGA1UECxMkQ2VydGlzaWduIENlcnRpZmljYWRv cmEgRGlnaXRhbCBTLkEuMSEwHwYDVQQDExhBQyBDZXJ0aXNpZ24gTXVsdGlwbGEgRzMwHhcNMTEw NjAxMDAwMDAwWhcNMTIwNTMwMjM1OTU5WjCB/zELMAkGA1UEBhMCQlIxEzARBgNVBAoUCklDUC1C cmFzaWwxFTATBgNVBAsUDElEIC0gMTYyNjk2MTEgMB4GA1UECxQXQXV0ZW50aWNhZG8gcG9yIEFS IEFDU1AxGzAZBgNVBAsUEkFzc2luYXR1cmEgVGlwbyBBMTEUMBIGA1UECxQLKGVtIGJyYW5jbykx FDASBgNVBAsUCyhlbSBicmFuY28pMS4wLAYDVQQDEyVVTklEQURFIE9GVEFMTU9MT0dJQ0EgREUg U0FOVEFOQSBMVERBMSkwJwYJKoZIhvcNAQkBFhpzYW5kcmFAaG9zcGl0YWxkZW9saG9zLm5ldDCB nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAptQhQ9SomM3r8BiDxA7xw2UdQ7WcLUS8c4Ln7Inh CMfOnDBxqjalIrSs6NE8cfLtIHX7+SC5wg7JNZBjPTFIiS2xIBy1nq21Tf+c9RaFRAvY8wdW1/Fw UMCO1hpDjzMQjZ5zWojuN5VF/EdNIEuwKTeVyUPg0A/hd05lWTuv2rkCAwEAAaOCA0IwggM+MIG9 BgNVHREEgbUwgbKgOAYFYEwBAwSgLwQtMjcwMzE5NTgwMDk1ODM1OTg5MDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwoCYGBWBMAQMCoB0EG01BUklBIEVMSVNBIE1BUkNPTkRFUyBNSVRSRaAZBgVg TAEDA6AQBA40MzAyMjQ2NjAwMDEwOaAXBgVgTAEDB6AOBAwwMDAwMDAwMDAwMDCBGnNhbmRyYUBo b3NwaXRhbGRlb2xob3MubmV0MAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUhLBCMzSjQiWlKJc+g+t3 8OhPwlQwDgYDVR0PAQH/BAQDAgXgMFUGA1UdIAROMEwwSgYGYEwBAgELMEAwPgYIKwYBBQUHAgEW Mmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vZHBjMIIBJQYD VR0fBIIBHDCCARgwXKBaoFiGVmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVw b3NpdG9yaW8vbGNyL0FDQ2VydGlzaWduTXVsdGlwbGFHMy9MYXRlc3RDUkwuY3JsMFugWaBXhlVo dHRwOi8vaWNwLWJyYXNpbC5vdXRyYWxjci5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlz aWduTXVsdGlwbGFHMy9MYXRlc3RDUkwuY3JsMFugWaBXhlVodHRwOi8vcmVwb3NpdG9yaW8uaWNw YnJhc2lsLmdvdi5ici9sY3IvQ2VydGlzaWduL0FDQ2VydGlzaWduTXVsdGlwbGFHMy9MYXRlc3RD UkwuY3JsMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBoAYIKwYBBQUHAQEEgZMwgZAw KAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIwZAYIKwYBBQUHMAKGWGh0 dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vY2VydGlmaWNhZG9z L0FDX0NlcnRpc2lnbl9NdWx0aXBsYV9HMy5wN2MwDQYJKoZIhvcNAQEFBQADggEBAIc+v7tVjcyg xVoI/D8Dns15JFKKECcXCDL+VSUL/iw250a2RaiZujal2U1dCY0F+PjXxLXniy5qUyDe24wDcu6g essHOaxEMXcxsK6RLBKkpejhNNDw3p5uplk11lIo25CtLXQEIMFJ6ghY7B/tj7AXrvdH9LPbMnUk ehyifKr8Ytl5hnBuX+pzGldnJXQh/DT9mpakz9AYnC8Cn7Y+KSHHh8TV6ZskCe8UmYFMlSdDhyjI +678oI3BJLkcrdtJ2FUCQuV4UXVl0WIzSpUVbPkImLz61cJopJTqzlcHwUZ7bd1ceKM2SolsWz1q iq9M0ylq/Op0SqbImwYZyzZn0nQ= Ubx6PjWlSxG9qkg042N3pwTad1A= IizZBbR3rFAVMfiF4RycolKUIxclYam9GBCKEy2vYRfqftPK7uiZWKJ79AOghAW6H9Z28PKydhqw AFpTUdykTgTMNw7gSjLgxag/wvQqxnxns1x7xBz9VIaSmHqTEq+Z26hKFuuI5+U3V2bxjf6U7Vjg 1+fZh7wbg2EO0NCbyuw= MIIGvjCCBaagAwIBAgIQMUXQVEQHMg/481gBNgigiTANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQG EwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEtMCsGA1UECxMkQ2VydGlzaWduIENlcnRpZmljYWRv cmEgRGlnaXRhbCBTLkEuMSEwHwYDVQQDExhBQyBDZXJ0aXNpZ24gTXVsdGlwbGEgRzMwHhcNMTEw NjAxMDAwMDAwWhcNMTIwNTMwMjM1OTU5WjCB/zELMAkGA1UEBhMCQlIxEzARBgNVBAoUCklDUC1C cmFzaWwxFTATBgNVBAsUDElEIC0gMTYyNjk2MTEgMB4GA1UECxQXQXV0ZW50aWNhZG8gcG9yIEFS IEFDU1AxGzAZBgNVBAsUEkFzc2luYXR1cmEgVGlwbyBBMTEUMBIGA1UECxQLKGVtIGJyYW5jbykx FDASBgNVBAsUCyhlbSBicmFuY28pMS4wLAYDVQQDEyVVTklEQURFIE9GVEFMTU9MT0dJQ0EgREUg U0FOVEFOQSBMVERBMSkwJwYJKoZIhvcNAQkBFhpzYW5kcmFAaG9zcGl0YWxkZW9saG9zLm5ldDCB nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAptQhQ9SomM3r8BiDxA7xw2UdQ7WcLUS8c4Ln7Inh CMfOnDBxqjalIrSs6NE8cfLtIHX7+SC5wg7JNZBjPTFIiS2xIBy1nq21Tf+c9RaFRAvY8wdW1/Fw UMCO1hpDjzMQjZ5zWojuN5VF/EdNIEuwKTeVyUPg0A/hd05lWTuv2rkCAwEAAaOCA0IwggM+MIG9 BgNVHREEgbUwgbKgOAYFYEwBAwSgLwQtMjcwMzE5NTgwMDk1ODM1OTg5MDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwoCYGBWBMAQMCoB0EG01BUklBIEVMSVNBIE1BUkNPTkRFUyBNSVRSRaAZBgVg TAEDA6AQBA40MzAyMjQ2NjAwMDEwOaAXBgVgTAEDB6AOBAwwMDAwMDAwMDAwMDCBGnNhbmRyYUBo b3NwaXRhbGRlb2xob3MubmV0MAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUhLBCMzSjQiWlKJc+g+t3 8OhPwlQwDgYDVR0PAQH/BAQDAgXgMFUGA1UdIAROMEwwSgYGYEwBAgELMEAwPgYIKwYBBQUHAgEW Mmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vZHBjMIIBJQYD VR0fBIIBHDCCARgwXKBaoFiGVmh0dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVw b3NpdG9yaW8vbGNyL0FDQ2VydGlzaWduTXVsdGlwbGFHMy9MYXRlc3RDUkwuY3JsMFugWaBXhlVo dHRwOi8vaWNwLWJyYXNpbC5vdXRyYWxjci5jb20uYnIvcmVwb3NpdG9yaW8vbGNyL0FDQ2VydGlz aWduTXVsdGlwbGFHMy9MYXRlc3RDUkwuY3JsMFugWaBXhlVodHRwOi8vcmVwb3NpdG9yaW8uaWNw YnJhc2lsLmdvdi5ici9sY3IvQ2VydGlzaWduL0FDQ2VydGlzaWduTXVsdGlwbGFHMy9MYXRlc3RD UkwuY3JsMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBoAYIKwYBBQUHAQEEgZMwgZAw KAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNlcnRpc2lnbi5jb20uYnIwZAYIKwYBBQUHMAKGWGh0 dHA6Ly9pY3AtYnJhc2lsLmNlcnRpc2lnbi5jb20uYnIvcmVwb3NpdG9yaW8vY2VydGlmaWNhZG9z L0FDX0NlcnRpc2lnbl9NdWx0aXBsYV9HMy5wN2MwDQYJKoZIhvcNAQEFBQADggEBAIc+v7tVjcyg xVoI/D8Dns15JFKKECcXCDL+VSUL/iw250a2RaiZujal2U1dCY0F+PjXxLXniy5qUyDe24wDcu6g essHOaxEMXcxsK6RLBKkpejhNNDw3p5uplk11lIo25CtLXQEIMFJ6ghY7B/tj7AXrvdH9LPbMnUk ehyifKr8Ytl5hnBuX+pzGldnJXQh/DT9mpakz9AYnC8Cn7Y+KSHHh8TV6ZskCe8UmYFMlSdDhyjI +678oI3BJLkcrdtJ2FUCQuV4UXVl0WIzSpUVbPkImLz61cJopJTqzlcHwUZ7bd1ceKM2SolsWz1q iq9M0ylq/Op0SqbImwYZyzZn0nQ=
D

Só dei uma olhada por cima, e já vi vários erros, de uma boa olhada no leiaute novamente.

Alguns erros encontrados:

<LoteRps Id="lote" versao="1.00">

Estava faltando o atributo versão.

<CpfCnpj><Cnpj>01470311000133</Cnpj></CpfCnpj>

Estava na estrutura errada.

De uma olhada novamente, revisa, porque dai pra baixo tem mais erros ainda.

Abraços,
Danilo Deus Dará

D

deusdara:
Só dei uma olhada por cima, e já vi vários erros, de uma boa olhada no leiaute novamente.

Alguns erros encontrados:

<LoteRps Id="lote" versao="1.00">

Estava faltando o atributo versão.

<CpfCnpj><Cnpj>01470311000133</Cnpj></CpfCnpj>

Estava na estrutura errada.

De uma olhada novamente, revisa, porque dai pra baixo tem mais erros ainda.

Abraços,
Danilo Deus Dará

[size=7] [/size]

Estive olhando e vi que Foz ainda usa o modelo 1.0 da Abrasf. Nesse modelo não existe os atributos Id da tag LoteRps, e também o Id da tag InfRps. Do resto seu XML está de acordo.
Esqueça minha mensagem anterior.

S

Oi Cleyton, vc conseguiu assinar o XML corretamente, tenho que fazer isto e estou meio perdido aqui, vc poderia me ajudar?

Desde já, Obrigado.

C

Ainda não consegui, estou com problemas para fazer está integração com Foz, é bem diferente de todas as integrações que já fiz.
Estou desenvolvendo várias rotinas diferentes de comunicação mais ainda nada.
Se você conseguir algo, favor respoda no forum para que também possa me ajudar, caso eu conseguir também farei o mesmo.
Você utiliza as classes de comunicação baixadas do WebService da prefeitura? ou faz algum outro tipo de comunicação?

Desculpe não ter a resposta mais está complicado mesmo.

S

cleytonrox:
Ainda não consegui, estou com problemas para fazer está integração com Foz, é bem diferente de todas as integrações que já fiz.
Estou desenvolvendo várias rotinas diferentes de comunicação mais ainda nada.
Se você conseguir algo, favor respoda no forum para que também possa me ajudar, caso eu conseguir também farei o mesmo.
Você utiliza as classes de comunicação baixadas do WebService da prefeitura? ou faz algum outro tipo de comunicação?

Desculpe não ter a resposta mais está complicado mesmo.

Bom dia Cleyton, pelo que entendi vc já conseguiu assinar a nota mas ainda não consegue enviar, correto?
Nós ainda não consegui assinar a nota, vc poderia nos ajudar com a questão da assinatura da nota?

Desde já Obrigado.

D

Sandro Mueller:
cleytonrox:
Ainda não consegui, estou com problemas para fazer está integração com Foz, é bem diferente de todas as integrações que já fiz.
Estou desenvolvendo várias rotinas diferentes de comunicação mais ainda nada.
Se você conseguir algo, favor respoda no forum para que também possa me ajudar, caso eu conseguir também farei o mesmo.
Você utiliza as classes de comunicação baixadas do WebService da prefeitura? ou faz algum outro tipo de comunicação?

Desculpe não ter a resposta mais está complicado mesmo.

Bom dia Cleyton, pelo que entendi vc já conseguiu assinar a nota mas ainda não consegue enviar, correto?
Nós ainda não consegui assinar a nota, vc poderia nos ajudar com a questão da assinatura da nota?

Desde já Obrigado.

Em qual parte você está enroscado?

S

deusdara:

Em qual parte você está enroscado?

Pra falar a verdade eu não sei o que esta enroscando, tem um amigo aqui no escritório tentando fazer, mas agora ele vai começar outro projeto e eu vou continuar o que ele está fazendo(nota pra SP, Foz do Iguaçu e Curitiba), pelo que vi ele com ele, tem uma classe que pegou da internet que assina o arquivo XML, e pelo que percebi da nota tem que assinar cada e depois o arquivo…

S

Oi pessoal fica aqui para os próximos que precisarem:

package br.com.aberta;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Key;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.xml.crypto.dsig.CanonicalizationMethod;
import javax.xml.crypto.dsig.DigestMethod;
import javax.xml.crypto.dsig.Reference;
import javax.xml.crypto.dsig.SignatureMethod;
import javax.xml.crypto.dsig.SignedInfo;
import javax.xml.crypto.dsig.Transform;
import javax.xml.crypto.dsig.XMLSignature;
import javax.xml.crypto.dsig.XMLSignatureFactory;
import javax.xml.crypto.dsig.dom.DOMSignContext;
import javax.xml.crypto.dsig.keyinfo.KeyInfo;
import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
import javax.xml.crypto.dsig.keyinfo.X509Data;
import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
import javax.xml.crypto.dsig.spec.TransformParameterSpec;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

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

public class Assinar{
    private final String C14N_TRANSFORM_METHOD = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
    private XMLSignatureFactory signatureFactory;
    private X509Certificate certificate509;
    private KeyInfo keyInfo;
    private SignedInfo signedInfo;
    private KeyStore keyStore;
    private File jksFile;
    private InputStream xmlDocument;
    private String caminhoXMLDestino;
    private String alias;
    private char[] password;
    private String tag;
    private boolean assinarDocumentoPrincipal;
    
    
    public Assinar(String caminhoXML, String caminhoXMLDestino, String caminhoJKS, String alias, String senha, String tag, boolean assinarDocumentoPrincipal){
		try {
			this.xmlDocument = new FileInputStream(caminhoXML);
			this.caminhoXMLDestino = caminhoXMLDestino;
			this.jksFile = new File(caminhoJKS);
		    this.password = senha.toCharArray();
		    this.alias = alias;
		    this.tag = tag;
		    this.assinarDocumentoPrincipal = assinarDocumentoPrincipal;
			this.setCertificate();
			ByteArrayOutputStream  out = this.assinar();
			this.xmlDocument.close();
			OutputStream arquivoXMLDestino = new FileOutputStream(this.caminhoXMLDestino);
			arquivoXMLDestino.write(out.toByteArray());
			arquivoXMLDestino.close();
			System.out.println("Sucesso");
		} catch (Exception e) {
			System.out.println("Erro - "+e.getMessage());
			e.printStackTrace();
		}
	}

    private PrivateKey getPrivateKey() throws Exception {
        InputStream jksStream = new FileInputStream(jksFile);
        keyStore.load(jksStream, password);
        Key privateKey = (Key) keyStore.getKey(alias, password);
        if (privateKey instanceof PrivateKey) {
            return (PrivateKey) privateKey;
        }
        return null;
    }

    private void setCertificate() throws Exception {
        InputStream jksStream = new FileInputStream(jksFile);
        keyStore = KeyStore.getInstance("JKS");
        keyStore.load(jksStream, password);
        certificate509 = (X509Certificate) keyStore.getCertificate(alias);
    }

    private ByteArrayOutputStream assinar() throws Exception {
        DocumentBuilderFactory documentBuilder = DocumentBuilderFactory.newInstance();
        documentBuilder.setNamespaceAware(true);

        Document document = documentBuilder.newDocumentBuilder().parse(xmlDocument);

        signatureFactory = XMLSignatureFactory.getInstance("DOM");

        Transform enveloped = signatureFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null);
        Transform c14n = signatureFactory.newTransform(C14N_TRANSFORM_METHOD, (TransformParameterSpec) null);

        ArrayList<Transform> transformList = new ArrayList<Transform>();
        transformList.add(enveloped);
        transformList.add(c14n);

        if (!this.tag.toLowerCase().equals("false")){
        	NodeList elemets = document.getElementsByTagName(this.tag);
            for (int x = 0; elemets.getLength() != x; x++) {
               
            	/*
            	 * N Linha abaixo temos que pegar uma tag que esta dentro da tag informada na variável tag 
            	 * para funcionar nos pegavamos um lista do tipo da variavel ou usavamos o getChildNodes().item(1)
            	 * embora exista o item 0, este é um item desconhecido(Text), nos testes que fiz o primeiro item "válido" sempre
            	 * foi o 1.
            	 */
//            	Element element = (Element)((Element) elemets.item(x)).getElementsByTagName("InfRps").item(0);
            	Element element = (Element)elemets.item(x).getChildNodes().item(1);
            	String id = element.getAttribute("id");
            	Reference reference = signatureFactory.newReference("#".concat(id), 
                        signatureFactory.newDigestMethod(DigestMethod.SHA1, null),
                        transformList, null, null);
                signedInfo = signatureFactory.newSignedInfo(
                        signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null),
                        signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
                        Collections.singletonList(reference));

                KeyInfoFactory keyInfoFactory = signatureFactory.getKeyInfoFactory();
                List<X509Certificate> x509Content = new ArrayList<X509Certificate>();
                x509Content.add(certificate509);
                X509Data x509Data = null;
                x509Data = keyInfoFactory.newX509Data(x509Content);
                keyInfo = keyInfoFactory.newKeyInfo(Collections.singletonList(x509Data));

                DOMSignContext signContext = new DOMSignContext(getPrivateKey(), document.getDocumentElement().getElementsByTagName(this.tag).item(x));
                XMLSignature signature = signatureFactory.newXMLSignature(signedInfo, keyInfo);
                signature.sign(signContext);
            }
        }
        

        if (assinarDocumentoPrincipal == true){
        	Reference reference = signatureFactory.newReference("", 
                    signatureFactory.newDigestMethod(DigestMethod.SHA1, null),
                    transformList, null, null);
            signedInfo = signatureFactory.newSignedInfo(
                    signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null),
                    signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
                    Collections.singletonList(reference));

            KeyInfoFactory keyInfoFactory = signatureFactory.getKeyInfoFactory();
            List<X509Certificate> x509Content = new ArrayList<X509Certificate>();
            x509Content.add(certificate509);
            X509Data x509Data = null;
            x509Data = keyInfoFactory.newX509Data(x509Content);
            keyInfo = keyInfoFactory.newKeyInfo(Collections.singletonList(x509Data));

            DOMSignContext signContext = new DOMSignContext(getPrivateKey(), document.getDocumentElement());
            XMLSignature signature = signatureFactory.newXMLSignature(signedInfo, keyInfo);
            signature.sign(signContext);
        }
        
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        transformer.transform(new DOMSource(document), new StreamResult(output));
        
        return output;
    }
}
S

Oi pessoal, agora estou iniciando o WebServiçe e estou meio perdido.
Através do Eclipse/Axis gerei as classes do WebService(client), mas como usa-las?
Alguém poderia me dar uma luz?

Segue anexo, lista de classes geradas.

Desde já, obrigado.


Criado 19 de janeiro de 2012
Ultima resposta 3 de out. de 2012
Respostas 14
Participantes 5