找不到包含Rest服务的RequestParams

时间:2015-06-09 10:33:41

标签: java android rest jax-ws

我正在编写一个使用休息服务进行用户注册的Android应用程序,但是我的登录服务遇到了麻烦。出于某种原因,我在我的服务电话中输入的请求参数在我的休息服务中找不到。 能不能告诉我我做错了什么或链接到解释如何解决这个问题的指南?

相关的android功能:

public void loginUser(View view) {

    // Get username and password values
    String username = usernameEdit.getText().toString();
    String password = passwordEdit.getText().toString();

    // Instantiate Http Request Param Object
    RequestParams params = new RequestParams();

    // Check if username & password is not null
    if(Utility.isNotNull(username) && Utility.isNotNull(password)) {

        // Http parameters
        params.put("username", username);
        params.put("password", password);
        invokeWS(params);

    } else {
        Toast.makeText(getApplicationContext(), "Vul een gebruikersnaam en of " +
                "wachtwoord in", Toast.LENGTH_LONG).show();
    }
}

// Method that performs RESTful webservice invocations
public void invokeWS(RequestParams params) {

    // Make RESTful webservice call using AsyncHttpClient object
    AsyncHttpClient client = new AsyncHttpClient();

    client.post("http://10.0.2.2:8080/NTR_application/rest/session", params, new AsyncHttpResponseHandler() {

        // When the response returned by REST has Http response code '200'
        @Override
        public void onSuccess(String response) {
            Toast.makeText(getApplicationContext(), "You are successfully logged in!" + response, Toast.LENGTH_LONG).show();

            // Gets an JSON object with user Data
            // Write user Data to SQLite
            User user = new Gson().fromJson(response, User.class);
            db.addUser(user);

            // Navigate to Home screen
            navigatetoHomeActivity();
        }

        // When the response returned by REST has Http response code other than '200'
        @Override
        public void onFailure(int statusCode, Throwable error,
                              String content) {
            Toast.makeText(getApplicationContext(), "ERROR!" + content + error + statusCode, Toast.LENGTH_LONG).show();
        }
    });
}

以及所谓的其他服务:

@Path("/session")
public class UserService {

    private Controller controller = new Controller();

    @POST //Post so you can't see the information in the browser history easily
    @Produces(MediaType.APPLICATION_JSON)
    public Response authenticate(@QueryParam("username") String username, @QueryParam("password") String password){
        User user = null;
        try {
             user = controller.authenticate(username, password);
        } catch (NoSuchAlgorithmException | SQLException e) {
            System.out.println("Authentication caught an exception; failed for: " + username);
            e.printStackTrace();
        }
        if (user != null){
            String json = new Gson().toJson(user);
            return Response.status(200).entity(json).build();
        } else {
            return Response.status(401).entity("Username and/or password is incorrect").build();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

一旦我看到它就会出现错误,因为我使用@POST我需要使用@FormParam而不是@QueryParam。 教程我曾经写过这些方法,使用@GET登录是不安全的。