Autor |
Mensagem |
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 15/10/2013 16:46:05
|
acamargo07
JavaC Membro
Membro desde: 15/10/2013 16:06:14
Mensagens: 11
Offline
|
valeu pela força raffamz
|
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 15/10/2013 16:55:39
|
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 |
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 16/10/2013 09:20:19
|
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.
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 16/10/2013 09:22:55
|
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 |
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 16/10/2013 09:28:57
|
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.
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 16/10/2013 09:34:00
|
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 |
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 16/10/2013 09:53:58
|
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.
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 16/10/2013 16:31:06
|
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.
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 21/10/2013 13:15:36
|
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);
}
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 21/10/2013 13:39:15
|
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.
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 14/03/2014 15:56:29
|
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?
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 14/03/2014 18:58:22
|
paulork
JavaC Membro
![[Avatar]](/jc/images/avatar/edfbe1afcf9246bb0d40eb4d8027d90f.png)
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 |
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 15/03/2014 08:25:29
|
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.
|
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 17/03/2014 08:12:17
|
paulork
JavaC Membro
![[Avatar]](/jc/images/avatar/edfbe1afcf9246bb0d40eb4d8027d90f.png)
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 |
|
|
![[Post New]](/jc/templates/javac/images/icon_minipost_new.gif) 17/03/2014 08:16:43
|
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.
|
|
|
|