1. ホーム
  2. android

[解決済み] Volleyを使ってJSONデータでPOSTリクエストを送信する

2023-05-19 07:59:26

質問

新しい JsonObjectRequest のリクエストを送信します。

  • JSONデータ(サーバからのレスポンス)を受け取りたい。OK
  • このリクエストでJSON形式のデータをサーバーに送信したい

    JsonObjectRequest request = new JsonObjectRequest(
        Request.Method.POST, "myurl.com", null,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                //...
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //...
            }
        })
        {
            @Override
            protected Map<String,String> getParams() {
                // something to do here ??
                return params;
            }
    
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                // something to do here ??
                return params;
            }
        };
    
    

追伸:私のプロジェクトでもGSONライブラリを使用しています。

どのように解決するのですか?

JsonObjectRequest 実際に受け付けるのは JSONObject をボディとして受け取ります。

から このブログの記事 ,

final String url = "some/url";
final JSONObject jsonBody = new JSONObject("{\"type\":\"example\"}");

new JsonObjectRequest(url, jsonBody, new Response.Listener<JSONObject>() { ... });

ここでは のソースコードと JavaDoc です。 ( @param jsonRequest ):

/**
 * Creates a new request.
 * @param method the HTTP method to use
 * @param url URL to fetch the JSON from
 * @param jsonRequest A {@link JSONObject} to post with the request. Null is allowed and
 *   indicates no parameters will be posted along with request.
 * @param listener Listener to receive the JSON response
 * @param errorListener Error listener, or null to ignore errors.
 */
public JsonObjectRequest(int method, String url, JSONObject jsonRequest,
        Listener<JSONObject> listener, ErrorListener errorListener) {
    super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener,
                errorListener);
}