Login Registre-se
Projeto NFSe  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
acamargo07

JavaC Membro

Membro desde: 15/10/2013 16:06:14
Mensagens: 11
Offline

valeu pela força raffamz
raffamz

JavaC Membro

Membro desde: 10/01/2013 09:37:57
Mensagens: 30
Offline

acamargo,

O Document procura algumas tags no arquivo xml e seta em alguns parametro, possivelmente ele não está encontrando alguma tag necessária. Veja nos eu arquivo xml se está com as tags necessarias (aquelas que vc busca pelo Document).

Abraço

raffamz - Raffa Magalhães
[Email]
acamargo07

JavaC Membro

Membro desde: 15/10/2013 16:06:14
Mensagens: 11
Offline

mas não é esse método que cria o document:



Pelo que eu entendo ele não procura nada neste momento ele somente cria o document, pegando a string xml, essa string está com valor ele deveria criar o document não deixar o mesmo null.
Esse erro podeira estar acontecendo posteriormente quando ele procura as tags, mas ele nem esta conseguindo criar o document pelo que eu vi.
raffamz

JavaC Membro

Membro desde: 10/01/2013 09:37:57
Mensagens: 30
Offline

Mas ele criar o document atraves deste método. Entende?Antes dele o this.document é nulo!

raffamz - Raffa Magalhães
[Email]
acamargo07

JavaC Membro

Membro desde: 15/10/2013 16:06:14
Mensagens: 11
Offline

Não sei se entendi o que quis dizer mas o this é populado por este método então era para ter valor.
raffamz

JavaC Membro

Membro desde: 10/01/2013 09:37:57
Mensagens: 30
Offline

acamargo,

Quando vc coloca o this.document, é para se referenciar ao atributo declarado da classe, aquele lá em cima, que em primeiro momento é nulo. Ae dentro de um método vc chama outro método para popular o this.document, este método recebe um arquivo xml que, atraves das tags setam atributos dentro da variaval document do tipo Document. O que acontece que este método não acha algumas tags necessarias e deixam de setar valores, é ae que ele dá nullPointer quando vc tenta acessar, por exemplo: Ele pode "voar" no getElementsByTagName, pois não deve ter encontrado a tag "LoteRps", entende?

raffamz - Raffa Magalhães
[Email]
acamargo07

JavaC Membro

Membro desde: 15/10/2013 16:06:14
Mensagens: 11
Offline

Acho que eu entendi agora eu estava achando que ele estava dando nullpointer por que o objeto document estava null.
acamargo07

JavaC Membro

Membro desde: 15/10/2013 16:06:14
Mensagens: 11
Offline

Mudo meu erro agora estou tendo o seguinte erro:

Exception in thread "main" javax.xml.crypto.dsig.XMLSignatureException: javax.xml.crypto.URIReferenceException: java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at org.jcp.xml.dsig.internal.dom.DOMReference.dereference(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMReference.digest(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.digestReference(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(Unknown Source)
at Assinador.assinaLoteRpsNFSe(Assinador.java:186)
at Assinador.assinaNFSe(Assinador.java:237)
at Assinador.assinaXML(Assinador.java:223)
at Teste.main(Teste.java:15)
Caused by: javax.xml.crypto.URIReferenceException: java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at org.jcp.xml.dsig.internal.dom.DOMURIDereferencer.dereference(Unknown Source)
... 8 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(Unknown Source)
at com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverFragment.engineCanResolve(Unknown Source)
at com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver.canResolve(Unknown Source)
at com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver.getInstance(Unknown Source)
... 9 more
javax.xml.crypto.URIReferenceException: java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at org.jcp.xml.dsig.internal.dom.DOMURIDereferencer.dereference(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMReference.dereference(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMReference.digest(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.digestReference(Unknown Source)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(Unknown Source)
at Assinador.assinaLoteRpsNFSe(Assinador.java:186)
at Assinador.assinaNFSe(Assinador.java:237)
at Assinador.assinaXML(Assinador.java:223)
at Teste.main(Teste.java:15)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(Unknown Source)
at com.sun.org.apache.xml.internal.security.utils.resolver.implementations.ResolverFragment.engineCanResolve(Unknown Source)
at com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver.canResolve(Unknown Source)
at com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolver.getInstance(Unknown Source)
... 9 more


Não consegui identificar o motivo.
fabiocaetano

JavaC Membro

Membro desde: 26/08/2013 15:16:39
Mensagens: 3
Offline

Olá acamargo07.

Provavelmente o erro é porque os métodos tentar assinar a tag pelo atributo "id", mas as tags correspondentes do XML não tem o atributo "id", então você tem que criar este atributo e setar um valor único. Tente adicionar algo assim:

if(id.equals("")){
id = String.valueOf(indexNfse + 1);
el.setAttribute("id", id);
}
acamargo07

JavaC Membro

Membro desde: 15/10/2013 16:06:14
Mensagens: 11
Offline

Boa tarde,

Realmente eu tinha que setar o atributo primeiro pois ele não conhecia o atributo, depois que eu setei ele parrou de dar o erro.
Diovane

JavaC Membro

Membro desde: 13/03/2014 13:32:01
Mensagens: 16
Offline

paulork wrote:Fala pessoal, para quem está com dificuldade para gerar as classes (Stubs) com o WSDL de Salvador... ou para o pessoal que não está conseguindo fazer o envio da NFSe de Salvador.
Depois de várias insistências consegui gerar os malditos STUBs para Salvador.

Vou descrever abaixo o que foi feito para isso:
- Bom, em primeiro lugar o WSDL de Salvador tem problemas, logo se nota ao tentar gerar as classes (Stubs) via Axis2
- É preciso ajustar isso
- O ERRO:

Como vc pode ver não é uma URL válida, logo não acha o XSD, logo dá erro, logo não gera as classes.

- A SOLUÇÃO:
Baixar os anexo dessa resposta e gerar novamente as classes via AXIS2 1.6.2. Deixe tudo na mesma pasta, os 3 arquivos e tente de novo.
Com os Stubs gerados dessa forma seu envio irá funcionar corretamente.
Código envio:


OBS: Esse apenas é o procedimento de Envio de Lote RPS...

--------------------------------------------------------------------------

Agora o problema que enfrento nesse momento:


Formato de assinatura que estou mandando (Tanto Rps quanto LoteRps, estão sendo assinados):


Formato de assinatura que um outro aplicativo (que está em funcionamento para Salvador) está mandando:


Repare que o "KeyInfo" contém outras TAGS e também acima disso muda um pouco a estrutura.
Já tentei assinar de 500 formas diferentes (inclusive como descrito aqui no forum e nada). Sempre a assinatura sai da primeira forma que apresentei acima e não da segunda.

Minhas perguntas:
- Alguém ai já fez a assinatura do XML para Salvador? Pode contribuir com a classe de assinatura? (Sei que quase ninguém gosta de contribuir depois que consegue, pois justamente não conseguiram ajuda, assim como não consegui com a historia do WSDL acima, mas se for sempre dessa forma ninguém sai do chão. Conhecimento é algo que precisa ser compartilhado!).
- Precisa daquelas tags extras:

como nesse exemplo acima (que inclusive diz no manual para serem evitadas)?
- Se sim. Como que eu faço isso? Como modifico a classe de assinatura para gerar essas TAGs a mais? (Procurei por tudo e em nenhum lugar diz como fazer, nem mesmo uma noçãozinha de como fazer).
- Quais TAGs preciso usar para assinatura? Rps ou InfRps? LoteRps ou EnviarLoteRpsEnvio? O lote deve ser assinado antes ou depois dos RPSs?

Agradeço a atenção de todos... assim que tiver a solução posto um Tutorial Completo de como solucionar, então se alguém quiser comtribuir, agradeço. Todos agradecem!


Boa tarde paulork

Estou com um problema parecido, estou assinando o xml porém a tag X509SubjectName não é gerada.
Saberia me dizer se há como gerar esta tag na assinatura?
paulork

JavaC Membro
[Avatar]

Membro desde: 01/10/2012 10:02:03
Mensagens: 27
Offline

Amigo, na sua classe que faz a assinatura, verifique onde você carrega o certificado (geralmente "loadCertificate") se tem as seguintes linhas:

repare no código comentado... descomente ele, oudá SOUT nesse acara ai: "cert.getSubjectDN().toString()"...
veja se ele está vindo...

abraço

Paulo R. K.
----------------------------------------
Desenvolvedor Java/Delphi @ 2014
Diovane

JavaC Membro

Membro desde: 13/03/2014 13:32:01
Mensagens: 16
Offline

Está igual, porém se eu descomentar irá apenas exibir uma mensagem em tela com o SubjectName e não criará a tag.
paulork

JavaC Membro
[Avatar]

Membro desde: 01/10/2012 10:02:03
Mensagens: 27
Offline

Olá amigo

Sim eu sei que só mostra a mensagem na tela, mas eu queria saber justamente se essa informação estava vindo... estranho isso...
No meu caso o problema com a assinatura não era por causa da diferença de estrutura na assinatura, era no carregamento do certificado...
Como você está carregando o certificado? Carregando via arquivo (A1)? Carregando via leitora (A3)? ou Carregando via repositório do windows?

abraço

Paulo R. K.
----------------------------------------
Desenvolvedor Java/Delphi @ 2014
Diovane

JavaC Membro

Membro desde: 13/03/2014 13:32:01
Mensagens: 16
Offline

Olá paulork,

Com o info("SubjectDN: " + cert.getSubjectDN().toString()); retorna o SubjectName certinho, já testei com o A1 e com o A3 e os dois acontecem da mesma forma.
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team