POST w / Params возвращает ошибку 400

0

Попытка отправить ответ на этот метод весной mvc:

@RestController
public class LoginRController {

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login_Post(@RequestParam(value = "user", required = true) String username,   @RequestParam(value = "pass", required = true) String password) {
        return ("Login: "+username+", "+password);
    }
}

Поэтому я сначала попробовал:

контроллер

App.controller('LoginController', [
        '$scope',
        'LoginService',
        function($scope, LoginService) {
            var self = this;

            self.authUser = function() {
                LoginService.authUser($('#inputEmail').val(),
                        $('#inputPassword').val()).then(function(d) {
                    console.log("This happened");
                }, function(errResponse) {
                    console.error('Error while fetching Currencies');
                });
            };
        } ]);

обслуживание

App.factory('LoginService', [
        '$http',
        '$q',
        function($http, $q) {

            return {

                authUser : function(username, password) {
                    return $http.post(
                            'login',
                            "user=" + encodeURIComponent(username) + "&pass="
                                    + encodeURIComponent(password)).then(
                            function(response) {
                                return response.data;
                            }, function(errResponse) {
                        console.error('Error @ authUser');
                        return $q.reject(errResponse);
                    })
                }
            }
        } ]);

Я обнаружил, что он всегда возвращает ошибку 400, что означает, что требуемые поля не совпадают... Что странно, потому что я могу использовать JQuery $ post() просто отлично.

Кроме того, я пробовал все здесь, в этой теме, AngularJs $ http.post() не отправляет данные и как я могу получить данные POST с urlencoded с помощью $ http в AngularJS?

Также попробовали:

'use strict';

App.factory('LoginService', [ '$http', '$q', function($http, $q) {

    return {

        authUser : function(username, password) {
            return $http.post('login', {
                params : {
                    user : username,
                    pass : password
                }
            }, {
                headers : {
                    'Content-Type': 'application/x-www-form-urlencoded'
                }
            }).then(function(response) {
                return response.data;
            }, function(errResponse) {
                console.error('Error @ authUser');
                return $q.reject(errResponse);
            })
        }
    }
} ]);
  • 0
    У вас много проблем в коде, потому что у вас недостаточно знаний о двухстороннем связывании в угловых приложениях (вы не должны использовать ограничения, подобные to $('#inputPassword').val() .
Теги:
spring-mvc

1 ответ

1
Лучший ответ

Используя последний пример в качестве базовой линии, вам необходимо: 1) сбросить params и 2) перенести данные (здесь с помощью jQuery $.param()):

return {
    authUser: function(username, password) {
        return $http.post('login',  $.param({
            user: username,
            pass: password
        }), {
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }).then(function(response) {
            return response.data;
        }, function(errResponse) {
           console.error('Error @ authUser');
           return $q.reject(errResponse);
        })
    }
}

Все это объяснено здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню