Я выполняю запрос POST с помощью Angular JS против Java-сервлета, работающего в Google App Engine. Код работает отлично, к сожалению, я заметил, что если один (или более) параметры очень долго я получаю следующее сообщение об ошибке:Получение длины 411 Требуемая ошибка, когда параметры очень длинные
Error: Length Required
POST requests require a Content-length header.
Это мой Угловая JS код:
app.controller('mycontroller', ['$scope', '$http', '$log', function($scope,$http,$log) {
this.myfunction = function() {
$http({
method: 'POST',
url: '/myservlet',
params: { method: 'my_method', param1 : $("#param1").val(), param 2: ... }
}).success(function(data) {
}).error(function(data) {
});
};
}
Param1, param2 и т. д. - это разные поля, в основном текстовые. Любое предложение? Честно говоря, я не знаю, что делать.
EDIT: Я попытался установить Content-Length в заголовке себя, но я получаю сообщение об ошибке, как я ожидал ...
headers : { 'Content-Length' : 0 },
Refused to set unsafe header "Content-Length"
Так в основном, если я установить Content-Length браузер отказывается выполнять вызов, если я его не устанавливаю, сервер говорит, что это необходимо ... Что я могу сделать?
Таким образом, на стороне сервлета request.getParameter («метод») возвращает нуль :( – raz3r
Секундочку, хочу взглянуть на то, как Java ест это – MeLight
HTTP://stackoverflow.com/questions/14525982/getting-request-payload-from-post-request-in-java-servlet они говорят здесь, что вам нужно использовать 'getReader()' для чтения тела запроса – MeLight