Bom dia a todos,
Estou aprendendo a fazer um client de webservice com axis2 em uma aplicação JavaSE de teste com método main, mas não estou conseguindo.
O Serviço da empresa que estou usando para aprender, está em protocolo seguro https e tem 3 certificados.
Eu já importei os certificados do protocolo https do serviço para a jvm do java 8 e estou usando o axis2, mas não estou conseguindo. Tentei ler a documentação, mas estou tendo dificuldade, já fiz testes com serviços sem autenticação e sem protocolo seguro https e consegui perfeitamente consumir serviço dos correios por exemplo, mas o serviço feito na minha empresa eu não consigo, podem me ajudar?
abaixo segue o erro que tenho na console do eclipse e o código da classe que tem o método main
Obs.: Eu importei os certificados para jvm, criei um arquivo de autenticação e usei o wsimport fazendo uso do arquivo de autenticação e consegui gerar as classes, entendo que não houve erro na geração das classes. Importei para o classpath do projeto uma implementação de jaxws e jaxb.
Erro na console
Exception in thread “main” com.sun.xml.internal.ws.client.ClientTransportException: O servidor enviou código de status HTTP 401: Unauthorized
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)
at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source)
at com.sun.xml.internal.ws.client.Stub.process(Unknown Source)
at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(Unknown Source)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source)
at com.sun.proxy.$Proxy32.read(Unknown Source)
at br.com.company.Principal.main(Principal.java:46)
Código do método main
package br.com.company;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Holder;
import br.com.nome_company.projeto_xxx_infra.Classexxx;
import br.com.nome_company.projeto_xxx_infra.ClassexxxService;
import br.com.nome_company.projeto_xxx_infra.Classexxx_Type;
import br.com.nome_company.projeto_xxx_infra.ClassexxxError_Exception;
public class Principal {
static {
java.net.Authenticator.setDefault(new java.net.Authenticator() {
@Override
protected java.net.PasswordAuthentication getPasswordAuthentication() {
return new java.net.PasswordAuthentication("usuarioxxx", "senhaxxx".toCharArray());
}
});
}
public static void main(String[] args) {
ClassexxxService service = new ClassexxxService();
Classexxx proxy = service.getHTTPSPort();
((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "caminho do endpoint fornecido pelo cliente");
/*
((BindingProvider)proxy).getRequestContext()
.put(BindingProvider.USERNAME_PROPERTY, "usuarioxxx");
((BindingProvider)proxy).getRequestContext()
.put(BindingProvider.PASSWORD_PROPERTY, "senhaxxx");*/
Classexxx_Type item = new Classexxx_Type();
Holder<Classexxx_Type> tp = new Holder<>();
try {
proxy.read(tp);
System.out.println("Sucesso!!");
} catch (ClassexxxError_Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}