4

DELETE-Method を使用して StringRequest の本文に単純なテキストを送信することは可能ですか?

誰かがリクエストの本文に何かを入れた例が見つかりませんでした...これは私のリクエストで、本文に「{'deviceid':'xyz'}」を追加したいです (メソッドは DELETE です):

final StringRequest stringRequest = new StringRequest(method, url + "?token=" + token, new Response.Listener<String>() {
        @Override
        public void onResponse(String jsonResponse) {
            // do something
    }, new Response.ErrorListener() {
            // do something
        }
    }) {

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("api-version", "1");

            return headers;
        }
    };
4

3 に答える 3

4

これは、Volley がデフォルトで DELETE の Body を送信しないためです。POST、PUT、PATCH のみ。控えめに言っても残念

ここにリストされている回避策があります: Volley - how to send DELETE request parameters?

于 2015-10-27T22:09:44.970 に答える
3

これを試して:

public class StringJSONBodyReqest extends StringRequest {

    private static final String TAG = StringJSONBodyReqest.class.getName();
    private final String mContent;

    public StringJSONBodyReqest(int method, String url, String content, Response.Listener<String> listener, Response.ErrorListener errorListener) {
        super(method, url, listener, errorListener);
        mContent = content;
    }


    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("api-version", "1");

        return headers;
    }


    @Override
    public byte[] getBody() throws AuthFailureError {

        byte[] body = new byte[0];
        try {
            body = mContent.getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            Log.e(TAG, "Unable to gets bytes from JSON", e.fillInStackTrace());
        }
        return body;
    }


    @Override
    public String getBodyContentType() {
        return "application/json";
    }
}

mContentあなたのjsonですString

于 2015-09-03T17:17:35.690 に答える