terça-feira, 27 de março de 2012

Substituindo Sun Base64Encoder com Apache Commons Codec

Nesse post eu ensinei assinar o RPS da prefeitura de São Paulo, na época eu utilizei a API Sun Base64Encoder para codificar a assinatura em Base64, mas como ela é uma API proprietária da Sun pode ser que não esteja disponível em futuras versões do Java, então você pode substituí-la pelo Apache Base64, basta fazer o seguinte:

Primeiro baixe o Apache Commons Codec.
Coloque o jar do commons codec no classpath da sua aplicação, ou se você utiliza o Netbeans, crie uma nova biblioteca e inclua no seu projeto.

Importe o Apache Commons Codec:

Altere o método signASCII:

A biblioteca Apache Commons Codec implementa outros encoders e decoders, vale a pena utilizá-la para outras situações.

2 comentários:

  1. Boa Tarde Eduardo, ve se voce consegue mw ajudar, estou tentando implementar o codigo e estou tendo retorno de assinatura do rps invalida, o retorno do metodo: return new String(Base64.encodeBase64(dsa.sign(), true));
    já é o valor que tenho que colocar dentro do xml na tag filha assinatura dentro da tag RPS? e por fim assinar o xml inteiro?

    Abraços

    ResponderExcluir
    Respostas
    1. Ola Roberto,

      Provavelmente você já resolveu seu problema, sinto muito eu estive ocupado nós últimos meses e sem muito tempo para o Blog.
      Esse valor é para ser colocado dentro da TAG assinatura, essa ortina não serve para assinatura do XML inteiro, eu vou publicar outro post com a assinatura do XML inteiro, é uma rotina um pouco mais complexa.

      Valeu!!

      Excluir