Gerar Estrutura do Cliente
Depois de todos esses passos preparativos para acessar e enviar as informações corretamente pelo serviço, é possível tratar o código do cliente. Para começar será necessário gerar o esqueleto do cliente, com as classes necessárias para o mesmo acessar o web service. Há duas formas de se fazer isso: pelo wizard do Eclipse ou via linha de comando.
Pelo Eclipse, clique com o botão direito no projeto, escolha New->Other... e crie um “Web Service Client”. Em “Service definition”, coloque o link WSDL.
As outras opções podem ser padrão. O servidor de aplicação deve estar funcionando para que essa etapa funcione, pois o Eclipse irá obter o WSDL em tempo real.
O Eclipse irá utilizar automaticamente a ferramenta WSDL2Java (da biblioteca Apache Axis) para gerar diversas classes no projeto Java, dentro de um pacote específico definido pelo namespace do serviço. As classes criadas são todos os POJOs usados no Web Service, juntamente com 5 classes (considerando a versão do Eclipse 3.6), com o nome iniciando pelo mesmo nome da classe do serviço. O wizard também colocará no Build Path do projeto as libs necessárias.
Para poder utilizar o código gerado e conectar-se ao serviço, crie uma nova classe no projeto e execute o código abaixo.
try {
Cargadescarga servico = new Cargadescarga();
CargaDescargaWS port = servico.getCargaDescargaWSPort();
resposta = port.cargaDescarga(
FileUtils.readFileToString(
new File("arquivo_entrada.xml"), "UTF-8")));
System.out.println(resposta);
} catch (Exception e) {
e.printStackTrace();
}
Para utilizá-lo é necessário incluir no build do projeto a biblioteca commons-io, da Apache, para poder utilizar as ferramentas da classe FileUtils.
A forma via linha de comando utiliza a aplicação wsimport, que gera todas as classes necessárias a partir do wsdl para poder consumir o serviço. O wsimport é uma ferramenta nativa a partir do JDK 1.6.
Ex.: wsimport -d src -s src https://www4.receita.fazenda.gov.br/carga-ws/cargadescarga/Cargadescarga.wsdl
Assim como o Eclipse, ele também cria todas as classes Java necessárias para conexão com o Web Service. A vantagem da linha de comando é não precisar de tantas bibliotecas extras, como as inclusas no projeto pelo Eclipse para o código funcionar. Abaixo segue um exemplo para consumir o Web Service.
try {
Cargadescarga servico = new Cargadescarga();
CargaDescargaWS port = servico.getCargaDescargaWSPort();
resposta = port.cargaDescarga(xmlStringAssinado);
System.out.println(resposta);
} catch (Exception e) {
e.printStackTrace();
}