Ich authentifiziere Benutzer mit Name und Passwort aus meiner Datenbank. Wenn der Benutzername oder das Passwort falsch ist, erstelle ich eine benutzerdefinierte Ausnahme.Jersey Antwort für Ausnahme funktioniert nicht wie erwartet
aber ich erwarte nicht Statuscode und Antwort.
Ich bin neu in Jersey und Web-Dienste.
Dies ist meine Funktion, die eine Antwort erstellt:
public static Response error(int Status_code, String Request_status ,String data, String Response_error){
ResponseBuilder response = new ResponseBuilder();
response.Status_code = Status_code;
response.Request_status = Request_status;
response.data =data;
response.Response_error = Response_error;
return Response.status(Status_code).entity(response).build();
}
Dies ist meine benutzerdefinierte Exception-Klasse Code:
public class InvalidcredentialsException extends WebApplicationException {
public InvalidcredentialsException(Response response) {
super(response);
}
}
Dies ist, wie ich werfen diese Ausnahme in meinem Code, wenn Anmeldeinformationen falsch sind (Benutzername und Kennwort) in der Funktion "AuthenticateUser" in meinem Modell.
throw new InvalidcredentialsException(ResponseBuilder.error(Response.Status.UNAUTHORIZED.getStatusCode(),"success","","invalid credentials"));
Wenn ich meine API bin Überprüfung ich 204 als Antwort immer bin, aber ich bin eine JSON mit den Parametern erwarten, die ich zur Verfügung gestellt haben.
Ich habe meine API auf folgende Weise umgesetzt:
@Path("/user")
public class User {
@POST
@Path("/login")
@Consumes(MediaType.APPLICATION_JSON)
@Produces("application/json")
public void UserAuthentication(UserCredentials user) {
UserModel userAuthentication = new UserModel();
userAuthentication.AuthenticateUser(user);
}
}
ich den folgenden Link verwendet Ausnahme zu erstellen und werfen:
JAX-RS/Jersey how to customize error handling?
Dies ist meine beglaubigen Funktion:
public void AuthenticateUser(UserCredentials user) {
Database db = new Database();
Connection con = null;
PreparedStatement preparedStatement = null;
ResultSet rs = null;
try {
String username = user.getUsername();
String password = user.getPassword();
con = db.getConnection();
if (con != null) {
String selectQuery_UserDetails = "SELECT name,password FROM user WHERE name=? AND password = ?";
preparedStatement = con.prepareStatement(selectQuery_UserDetails);
preparedStatement.setString(1, username);
preparedStatement.setString(2, password);
rs = preparedStatement.executeQuery();
if (!rs.isBeforeFirst()) {
throw new InvalidcredentialsException(ResponseBuilder.error(Response.Status.UNAUTHORIZED.getStatusCode(),"success","","invalid credentials"));
}
}}catch (SQLException e) {
} finally {
db.closeConnection(con);
}
}
Danke
Ich nehme an, dass 'userAuthentication.AuthenticateUser (user);' keine Ausnahme auslöst. Wie implementieren Sie es? –
@Meiko: Ich habe meine Frage bearbeitet und auch meine AuthenticateUser-Funktion veröffentlicht. Danke für Ihre Antwort. –