为啥我们在 jsonArrayRequest 中将 jsonRequest 参数设置为 null?

Posted

技术标签:

【中文标题】为啥我们在 jsonArrayRequest 中将 jsonRequest 参数设置为 null?【英文标题】:Why do we set the jsonRequest parameter to null in jsonArrayRequest?为什么我们在 jsonArrayRequest 中将 jsonRequest 参数设置为 null? 【发布时间】:2021-07-26 07:42:13 【问题描述】:

我正在编写一个简单的 JSONArrayRequest。这是我的 JSONArrayRequest:

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() 
            @Override
            public void onResponse(JSONArray response) 

            
        , new Response.ErrorListener() 
            @Override
            public void onErrorResponse(VolleyError error) 

            
        );

我对为什么我们将 JsonArrayRequest 中的 jsonRequest 参数设置为 null 感到困惑。我找到的唯一文档是:https://developer.android.com/training/volley/request,它并没有真正解释太多。如果有人可以解释这一点,我将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

正如documentation所说,JsonArrayRequest的参数是:

method - 要使用的 HTTP 方法

url - 从中​​获取 JSON 的 URL

jsonRequest - 与请求一起发布的 JSONArray。 Null 表示不会随请求一起发布参数

listener - 接收 JSON 响应的侦听器

errorListener - 错误侦听器,或 null 忽略错误

因此,您传递的 null 值是用于与请求一起发布的参数,如果您没有要传递的内容,则可以为 null。

【讨论】:

您好,谢谢您的回答!但是,与请求一起发布究竟意味着什么?谢谢。 您实际上是将信息传递给服务器以配合您的请求,如果您只是发出一个简单的请求,通常不需要这样做。【参考方案2】:

jsonRequest 顾名思义,请求中的 json 表示您想要传递到服务器的有效负载。

GET:是用于从服务器获取一些信息的 HTTP 方法类型,在这种情况下,我们通常不必将任何有效负载传递给服务器,因此 jsonRequest 为 null在这种情况下,意味着您的 API 请求中的正文将为空。

POST/PUT:是用于在服务器上创建/更新信息的 HTTP 方法类型,在这种情况下,我们必须将任何有效负载传递给服务器,因此 jsonRequest 是非空的在这种情况下,主体将是我们将在您的 API 请求中作为 jsonRequest 传递的 json 数据。

更新:

jsonRequestJsonArrayRequest 中属于JSONArray 类型,因此您可以将您的arraylist 转换为jsonarray 并传递它。

ArrayList<String> list = new ArrayList<String>();
list.add("hello");
list.add("CodingChap");
JSONArray jsonArray = new JSONArray(list);

【讨论】:

谢谢!那么根据我们在方法参数中传递的内容,我们对 jsonRequest 参数使用 null 还是非 null 呢?另外,您能否举一个将 jsonRequest 设置为 ArrayList 的用例示例?谢谢! @CodingChap 请查看答案的更新部分 另外,还有一件事。在 JsonArrayRequest 中将数据作为 jsonRequest 发送的用例是什么?(即 JsonArrayRequest 将如何处理这些数据)。谢谢。 发送有效载荷 请更具体。谢谢。

以上是关于为啥我们在 jsonArrayRequest 中将 jsonRequest 参数设置为 null?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们在 PHP 中将一些变量声明为“$_variablename”...? [复制]

为啥我们不能在 kotlin 中将类的可见性标记为“受保护”?

为啥我们在 Scikit learn 中将 X_test 存储到 y_preds 变量中? [关闭]

为啥我不能在c中将字符串转换为int

为啥我需要在 Django 中将 kwargs 设置为 CBV 的参数

为啥要在 XSS 预防中将 & 转换为 & ?