POST 请求 RESTful CART API 期间出现意外响应代码 500

Unexpected response code 500 during POST request to RESTful CART API

我目前正在为 Woocommerce 使用 RESTful API 将商品添加到购物车。根据 API 的文档,它应该接受 "product_id" 和 "quantity" 作为参数,我在其中使用了以下代码:

JSONObject addcart = new JSONObject();

    try {
        addcart.put("product_id", 28);
        addcart.put("quantity", 1);
        Log.e("params", addcart.toString());

    } catch (JSONException e) {
        e.printStackTrace();
    }

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, domain+api,addcart,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Toast.makeText(OrderActivity.this, response.toString(), Toast.LENGTH_LONG).show();
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(OrderActivity.this, error.toString(), Toast.LENGTH_LONG).show();
        }
    }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("Content-Type", "application/json");
            return params;
        }
    };


    Controller.getPermission().addToRequestQueue(request);

}

但是我在执行 POST 请求时收到此错误消息:

E/params: {"product_id":28,"quantity":1} 
E/Volley: [365] BasicNetwork.performRequest: Unexpected response code 500 for http://domain+api

产品未添加到购物车,通过 GET 请求得到的响应是 "Cart is empty!"。我究竟做错了什么?我很确定 API 有效,但我不明白为什么我的 POST 请求没有通过并不断收到错误 500。有人能给我一些建议吗?

(如果有人想知道文档:https://seb86.github.io/WooCommerce-Cart-REST-API-Docs/?shell#add-to-cart

我使用下面的代码解决了这个问题:

 StringRequest addrequest = new StringRequest(Request.Method.POST, "http://domainname/test/wp-json/wc/v2/cart/add?product_id=28&quantity=14" ,
            new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {

                    Toast.makeText(OrderActivity.this, response, Toast.LENGTH_LONG).show();
                    Log.e("Response", response);

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(OrderActivity.this, error.toString(), Toast.LENGTH_LONG).show();
            Log.e("Error", error.toString());
        }
    }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            boolean dbempty = helper.checklogin();
            if (!dbempty) {
                params.put("Authorization", "Bearer " + helper.getToken());
            }
            params.put("Content-Type", "application/json");
            return params;
        }
    };
    Controller.getPermission().addToRequestQueue(addrequest);

我收到了以下字符串请求响应,并且该项目确实已添加到我的本地主机网站上:

E/Response: <br />
<b>Warning</b>:  is_numeric() expects exactly 1 parameter, 3 given in <b>C:\xampp\htdocs\test\wp-includes\rest-api\class-wp-rest-request.php</b> on line <b>858</b><br />
<br />
<b>Warning</b>:  is_numeric() expects exactly 1 parameter, 3 given in <b>C:\xampp\htdocs\test\wp-includes\rest-api\class-wp-rest-request.php</b> on line <b>858</b><br />
{"key":"33e75ff09dd601bbe69f351039152189","product_id":28,"variation_id":0,"variation":[],"quantity":14,"line_tax_data":{"subtotal":[],"total":[]},"line_subtotal":979.86,"line_subtotal_tax":0,"line_total":979.86,"line_tax":0,"data":{}}

我曾尝试过其他 POST 方法字符串请求,我收到了完全相同的警告消息并且 POST 请求没有通过,但是当我这样做时它起作用了尽管我仍然收到错误信息。但希望这可以帮助其他人使用相同的 API 解决同样的问题。

注意:我添加的新 header 由 Authorization key 和 Bearer Token 值组成,目的是为每个用户提供他们自己的唯一 CART,这样他们就不会共享同一个购物车。这不是解决问题所需要的。