HTTP post方法在请求数量大时显示400错误

时间:2017-09-13 12:19:19

标签: java angularjs http-post http-status-code-400

这是我的angularjs代码

$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',

            }

在该浏览器将此请求称为错误网址后,发布网址变得非常大,约为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数组

真的我不知道是什么问题。我怀疑网址长度,但我不知道如何解决这个问题。请帮忙摆脱这个

3 个答案:

答案 0 :(得分:1)

这似乎是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'
        })

答案 1 :(得分:1)

尝试以这种方式进行ajax调用:

foreach

"的 PARAMS "用于GET通话,使用" 数据"通过邮局召集

答案 2 :(得分:0)

POST方法没有任何大小限制。但是,您可能用于运行应用程序的服务器可能有一些大小限制。你可能想检查一下。 检查以供参考: AngularJs $http.post() request is not sending when sending data size is huge?

另一个选择是使用分页数据并以小块形式发送。