HTTP POST方法400示出了错误时的请求数目是大
问题描述:
这是我的angularjs代码HTTP POST方法400示出了错误时的请求数目是大
$scope.createOrderObject.orderItemObjs=JSON.stringify($scope.createOrderObject.orderItemObjs);
$scope.createOrderObject
是一个数组,这包含比3阵列更多。 当我添加达5产品这是工作超好,但是当我尝试添加第6项显示400错误。
$http({
method: "POST",
url: baseUrl + "/Order/saveOrUpdateOrders",
params: $scope.createOrderObject,
headers: {
'Content-Type': 'application/json',
}
在浏览器将此请求告知为malform url后,发布url变得非常大,大约有5000个字符。
我的servlet接收到这个请求这样
@RequestMapping(value = "/Order/saveOrUpdateOrders", method =RequestMethod.POST)
public void saveOrUpdateOrders(OrdersFormObj orderFormObj, HttpServletResponse response, HttpServletRequest request) throws IOException {
try {
String addCity = request.getParameter("addCity");
String addDist = request.getParameter("addDist");
String orderItemObjs = request.getParameter("orderItemObjs");
这是一个
String orderItemObjs = request.getParameter("orderItemObjs");
Stringfy阵列
我真的不知道是什么问题。我怀疑网址的长度,但我不知道如何解决这个问题。请帮忙摆脱这个
答
这似乎是一个POST请求中的PARAMS的长度问题。请阅读以下
What is the maximum length of a URL in different browsers?
所以,我要说,你使用一些其他的机制,将数据发送到服务器。
相反的params
,你应该使用data
像下面
$http({
method: "POST",
url: baseUrl + "/Order/saveOrUpdateOrders",
data: $scope.createOrderObject,
headers : {
'Content-Type' : 'application/json'
})
答
POST方法没有任何大小限制。但是,您可能用于运行应用程序的服务器可能有一定的大小限制。你可能想检查一下。 检查这个参考: AngularJs $http.post() request is not sending when sending data size is huge?
另一种选择是随着数据分页和小块发送。
答
尽量使AJAX调用这种方式:
var req = {
method: 'POST',
url: baseUrl + "/Order/saveOrUpdateOrders",
headers: {
'Content-Type': "application/json"
},
data: $scope.createOrderObject
}
$http(req).success(function(){...}).error(function(){...});
“PARAMS” 是GET调用,使用 “数据” 与后调用