В этом примере я пытаюсь взять параметры, отправленные пользователем Android во время входа в систему, для проверки подлинности пользователя, и в ответ я даю токен, но при проверке его на почтальоне я получаю Unsupported Media Type Error
Ниже приведен класс ApplicationConfig.java
package com.test;
import java.util.Set;
import javax.ws.rs.core.Application;
@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(resources);
return resources;
}
/**
* Do not modify addRestResourceClasses() method.
* It is automatically populated with
* all resources defined in the project.
* If required, comment out calling this method in getClasses().
*/
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(com.test.AuthenticationEndpoint.class);
}
}
Ниже приведен класс AuthenticationEndpoint.java
package com.test;
import java.security.SecureRandom;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/authentication")
public class AuthenticationEndpoint {
String token=null;
@POST
@Path("/getData")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response authenticateUser(@FormParam("username") String username,
@FormParam("password") String password) {
try {
// Authenticate the user using the credentials provided
authenticate(username, password);
// Issue a token for the user
// String token = issueToken(username);
// Return the token on the response
return Response.ok(token).build();
} catch (Exception e) {
return Response.status(Response.Status.FORBIDDEN).build();
}
}
private void authenticate(String username, String password) throws ClassNotFoundException, SQLException {
// Authenticate against a database, LDAP, file or whatever
// Throw an Exception if the credentials are invalid
boolean status = false;
credentials cred=new credentials();
String user = cred.getUsername();
String pass = cred.getPassword();
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
String sql="Select userid,password,area,designation from login";
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/databasename","root","");
Statement st = con.createStatement();
pst = conn
.prepareStatement("select * from login where userid=? and password=?");
pst.setString(1, user);
pst.setString(2, pass);
rs = pst.executeQuery();
status = rs.next();
if(status){
token = issueToken(user);
}
} catch (Exception e) {
System.out.println(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pst != null) {
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
private String issueToken(String username) {
// Issue a token (can be a random String persisted to a database or a JWT token)
// The issued token must be associated to a user
// Return the issued token
String user = username;
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
String token = bytes.toString();
Connection conn;
Statement st;
ResultSet rs=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.
getConnection("jdbc:mysql://localhost:3306/basename","root","");
st = conn.createStatement();
String TableSQL = "UPDATE login SET token = ? WHERE userid = ?";
PreparedStatement preparedStatement = conn.prepareStatement(TableSQL);
preparedStatement.setString(1, token);
preparedStatement.setString(2, user);
// execute insert SQL stetement
preparedStatement .executeUpdate();
}catch(Exception e){
}
return token;
}
}
Ниже credentials.java класс
package com.test;
public class credentials {
private String username;
private String password;
private String area;
private String designation;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
}