volley delete请求抛出400个错误请求

f87krz0w  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(310)

我试图发送一个删除请求到我的服务器,但我得到一个400坏的请求错误代码回来。我搜索了很多,但找不到任何有帮助的解决办法。当我和 Postman 一起试的时候,这个请求很有效。
postman的curl命令如下:

curl --location --request DELETE 'https://blablabla.de' \
--header 'Content-Type: application/json' \
--data-raw '{
"deviceId":"33",
"factoryReset":"0"
}'

这是我的java代码:

public void unlinkDevice(String deviceId) {
    Log.d(LOG_TAG, "unlinkDevice: " + deviceId);
    JSONObject jsonObject = new JSONObject();
    try {
        jsonObject.put("deviceId", deviceId);
        jsonObject.put("factoryReset", 0);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.DELETE, url, jsonObject, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            listener.onDeviceUnlink(response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            listener.onError(error);
        }
    }) {

        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");
            headers.put("Cookie", StartApplication.getCookie());
            return headers;
        }
    };

    queue.addToRequestQueue(request);
}

我也尝试不在头中设置内容类型,但是当我得到415错误时,我也删除了getbodycontenttype()方法,但是这也没有改变任何东西。
有什么其他的想法可以帮助你吗?

cx6n0qe3

cx6n0qe31#

好吧,我找到原因了。。。在volley中,当您使用delete请求时,主体将被忽略

相关问题