PUT запрос на залп Android - PullRequest
       51

PUT запрос на залп Android

0 голосов
/ 08 апреля 2020

Мне нужно отправить запрос PUT на сервер. Тело требует ключ, который является String, и значение, которое должно быть JSONObject, с типом содержимого x- www-form-urlencoded. Я прикрепил требуемый запрос PUT для Postman, код, который я использую, и ошибку I ' м становится ниже. Пожалуйста, помогите!

Postman

private void modifyObject(String object, String objectId) throws JSONException {
        /**PUT REQUEST*/
        String putUrl = api.url;
        Log.d("putUrl", putUrl);

        JSONObject jsonObject = new JSONObject();
        jsonObject.put(dateName, actualDate);
        jsonObject.put(locationName,actualLocation);
        jsonObject.put(status,actualStatus);

        final String requestBody = "data=" + jsonObject;
        Log.d("requestBody", requestBody);

        JsonObjectRequest request = new JsonObjectRequest(Request.Method.PUT, putUrl, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("Response", String.valueOf(response));
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        }){
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<String, String>();
                headers.put("Content-type", "application/json");
                headers.put("Authorization", accessToken);
                return headers;
            }

            @Override
            public String getBodyContentType() {
                return "application/x-www-form-urlencoded; charset=utf-8";
            }

            @Override
            public byte[] getBody() {
                try {
                    return requestBody == null ? null : requestBody.getBytes("utf-8");
                } catch (UnsupportedEncodingException uee) {
                    VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
                    return null;
                }
            }
        };
        mRequestQueue.add(request);
    }
W/System.err: com.android.volley.ParseError: org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
W/System.err:     at com.android.volley.toolbox.JsonObjectRequest.parseNetworkResponse(JsonObjectRequest.java:90)
W/System.err:     at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:143)
        at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:111)
        at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:90)
W/System.err: Caused by: org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
W/System.err:     at org.json.JSON.typeMismatch(JSON.java:112)
        at org.json.JSONObject.<init>(JSONObject.java:163)
        at org.json.JSONObject.<init>(JSONObject.java:176)
W/System.err:     at com.android.volley.toolbox.JsonObjectRequest.parseNetworkResponse(JsonObjectRequest.java:85)
...