基本REST Web服务无法注册

时间:2014-09-15 09:32:50

标签: java android mysql rest

首先,我是创建Web服务的新手。有人总是在我之前为我做过,但这次我需要自己构建它。请忍受我,我仍然不太了解。

我按照this教程(您可以在那里下载源代码,我几乎遵循了所有内容)并根据需要更改了一些变量,例如:

//Change these parameters according to your DB
public class Constants {
    public static String dbClass = "com.mysql.jdbc.Driver";
    private static String dbName= "users";
    public static String dbUrl = "jdbc:mysql://localhost:3306/"+dbName;
    public static String dbUser = "root";
    public static String dbPwd = "";

}

我试图运行该项目,但它只在eclipse的默认浏览器上运行web(运行为 - >在服务器上运行)。我所知道的是tomcat已经在本地服务器上运行

我在 XAMPP 上打开 Apache MySql 并创建了表格,然后按照教程进行操作。我还在Chrome浏览器上安装了高级休息客户端

我尝试在高级休息客户端上使用此网址:http://localhost:3306/useraccount/register/doregister?username=admin&password=admin GET 方法进行注册,结果为 200 OK ,但没有JSON被返回(它应该返回一些JSON)。

当我在phpmyadmin上检查我的数据库时,用户表仍为空,因此注册失败。

这是注册类:

public class Register {
    // HTTP Get Method
    @GET 
    // Path: http://localhost/<appln-folder-name>/register/doregister
    @Path("/doregister")  
    // Produces JSON as response
    @Produces(MediaType.APPLICATION_JSON) 
    // Query parameters are parameters: http://localhost/<appln-folder-name>/register/doregister?name=pqrs&username=abc&password=xyz
    public String doLogin(@QueryParam("name") String name, @QueryParam("username") String uname, @QueryParam("password") String pwd){
        String response = "";
        //System.out.println("Inside doLogin "+uname+"  "+pwd);
        int retCode = registerUser(name, uname, pwd);
        if(retCode == 0){
            response = Utitlity.constructJSON("register",true);
        }else if(retCode == 1){
            response = Utitlity.constructJSON("register",false, "You are already registered");
        }else if(retCode == 2){
            response = Utitlity.constructJSON("register",false, "Special Characters are not allowed in Username and Password");
        }else if(retCode == 3){
            response = Utitlity.constructJSON("register",false, "Error occured");
        }
        return response;

    }

    private int registerUser(String name, String uname, String pwd){
        System.out.println("Inside checkCredentials");
        int result = 3;
        if(Utitlity.isNotNull(uname) && Utitlity.isNotNull(pwd)){
            try {
                if(DBConnection.insertUser(name, uname, pwd)){
                    System.out.println("RegisterUSer if");
                    result = 0;
                }
            } catch(SQLException sqle){
                System.out.println("RegisterUSer catch sqle");
                //When Primary key violation occurs that means user is already registered
                if(sqle.getErrorCode() == 1062){
                    result = 1;
                } 
                //When special characters are used in name,username or password
                else if(sqle.getErrorCode() == 1064){
                    System.out.println(sqle.getErrorCode());
                    result = 2;
                }
            }
            catch (Exception e) {
                // TODO Auto-generated catch block
                System.out.println("Inside checkCredentials catch e ");
                result = 3;
            }
        }else{
            System.out.println("Inside checkCredentials else");
            result = 3;
        }

        return result;
    }

请帮助我,我尽我所能,现在我迷失了。

非常感谢你的时间。

2 个答案:

答案 0 :(得分:0)

我记得我之前使用localhost loooongggg做了一些事情,所以正确的网址是http://localhost:8080/useraccount/register/doregister?username=admin&password=admin

现在我可以成功注册,但我仍然不明白这段代码是什么:public static String dbUrl = "jdbc:mysql://localhost:3306/"+dbName;(请参阅我的问题)

请为我解释一下这些事情。

答案 1 :(得分:0)

3306:它是接受数据库请求的MySQL端口。 8080:它是侦听Http请求的tomcat的端口。

代码:     public static String dbUrl =&#34; jdbc:mysql:// localhost:3306 /&#34; + dbName;

告诉jdbc(java数据库连接)url连接到mysql,以便对后端数据库执行插入,删除和读取操作。 DBConnection利用此常量连接到MySQL数据库。

以下是可能对您有所帮助的JDBC指南: http://www.tutorialspoint.com/jdbc/jdbc-quick-guide.htm

查看您的代码,我建议: 1.使用Log4j或Logback代替System out 2.返回内部错误的状态代码500,验证错误400的状态代码等。以下是您可以使用的状态代码列表: http://www.restapitutorial.com/httpstatuscodes.html