ATENÇÃO ESTE CODIGO JAVA ESTAVA ERRADO NA PRIMEIRA VEZ E FOI AJUSTADO PARA FUNCIONAR CORRETAMENTE, ASSIM, TODOS EXEMPLOS DO PROFESSOR E AGORA A PARTE JAVA ESTA CORRETA, VOLTEI E AJUSTEI PARA TER ALGO PARA ALGUEM
Eu ate entendi, só não compreendo o porque continua...
Implementei o Cors conforme instruções que vi em vários sites, olha meu retorno via teste post
E na aplicação Ionic continua o erro.
POST /tennisRanking/service/usuarios/logon HTTP/1.1
Content-Length: 50
Host: localhost:8080
Content-Type: application/json
[{"email":andre.jrocha@uol.com.br,"senha":123456}]
HTTP/1.1 200 OK
X-Powered-By: Undertow/1
Access-Control-Allow-Headers: origin, content-type, accept, authorization
Server: WildFly/10
Date: Sun, 15 Apr 2018 22:00:33 GMT
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Type: application/json;charset=UTF-8
Content-Length: 109
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, HEAD
Acess-Control-Allow-Origin: *
{"id":1,"nome":"Andre Rocha","email":"andre@uol.com.br","senha":"123456","dataNasc":null,"urlFoto":""}
Viu que tem "Access-Control-Allow-Origin: *
Vi nos foruns de Java Rest aqui e um rapaz tinha o problema similar e resolveu como fiz...
Meus Códigos Java
@POST
@Path("/logon")
@Consumes("application/json; charset=UTF-8")
@Produces("application/json; charset=UTF-8")
public Response logon(String jsonString) {
GSon gson = new Gson();
// Crie uma Classe que receba exatamente o conteudo de seu Json e não esqueça dos Getter Setter.
UsuarioTo res = gson.fromJson(jsonString, UsuarioTo.class);
// Essa classe UsuarioTO só contem email e senha
Usuario usu = new Usuario();
try {
usu = dao.buscaUsuarioEmail(res.getEmail(), res.getSenha());
return Response.ok()
.header("Acess-Control-Allow-Origin", "*")
.entity(usu)
.build();
} catch (Exception e) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.header("Acess-Control-Allow-Origin", "*")
.entity(e.getStackTrace().toString()).build();
}
}
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;
@Provider
public class CorsFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
responseContext.getHeaders().add("Access-Control-Allow-Credentials", "true");
responseContext.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
}
}
LOGIN.TS
efetuaLogin(){
this._usuarioSerice.efetuaLogin(this.email, this.senha)
.subscribe(
(usuario: Usuario) => {
this.navCtrl.setRoot(HomePage);
} ,
() => {
this._alertCtrl.create({
title: 'Falha no Login',
subTitle: 'Email ou senha incorretos, verifique!',
buttons: [{
text: 'Ok'
}]
}).present();
}
);
}
Service
efetuaLogin(email: string,senha: string) : Observable<Usuario> {
return this._http.post<Usuario>('http://localhost:8080/tennisRanking/service/usuarios/logon', { email, senha})
.do( (usuario: Usuario ) => this._usuarioLogado = usuario );
}