Pessoal, é o seguinte.
Temos um sistema que pega as informações da NFe da receita. Só que ele não depende de certificados digitais… Eu utilizo HttpClient da Apache pra pegar as páginas. Até aí tudo bem… Consigo pegar os htmls. O problema está em parsear os malditos… Não é simplesmente usar uma API de XML ou HTML ou algum parser que existe pronto (tipo o Bison), porque o HTML vem TODO desformatado.
Depois de longas horas examinando uns HTMLs muito ruins de ler, encontrei um pequeno padrão. Depois disso, com auxílio da lib HttpParser, eu consegui separar as coisas que eu realmente preciso. O problema é que ainda assim está extremamente complexo de dar manutenção, porque é um algoritmo que é muito ruim de acompanhar (pense numa nota com 20 itens, pegando cada propriedade dele… é muito extenso). Sem contar que alguns dados vem com as propriedades diferentes… Por exemplo… Na seção de produtos, as vezes o título da base de cálculo vem assim:
E as vezes vem assim:
São ambos a mesma coisa no site. Esse último geralmente aparece quando tem ICMS ST junto, mas existem VÁRIAS regras pra isso… Que eu fui descobrindo só testando o algoritmo em cima dos htmls. Dá pra ver que é MUITO… ‘volátil’, digamos assim (uma hora tá de um jeito, outra hora tá de outro). Isso geralmente acontece na seção de produtos, que é totalmente bagunçada… Várias notas dão certo, mas peguei umas chaves de acesso que estou me batendo pra descobrir a maneira de arrumar.
E o ‘parseamento’ foi feito dessa forma… Pega uma chave, testa, compara e gera um arquivo dizendo as propriedades do mesmo (pros testes automatizados). Vocês podem até dizer “aaah, mas é muito fácil… já tem uns testes automatizados, qual a dificuldade disso?”. Certo. O problema é que depois de algum tempo a nota sai do site… E aí vários testes quebram.
Bom… está MUITO custoso dar manutenção pra ele… Eu tenho que debugar com muita cautela pra verificar cada campo, se eles ‘pularam’ alguma coisa ou algo do gênero. Eu seeeeeeeeeeeei que posso usar o certificado pra consumir o WS do governo, mas quero procurar outras alternativas, pra não precisar gastar a graninha do certificado.
Vocês saberiam me dizer se existe algo mais simples a se fazer? Algum WS que faz isso ou coisa do tipo? Ou melhor, alguma coisa free que faça isso?