如何在 HTTP POST/GET 中发送空参数

How to send null params in HTTP POST/GET

在 http post/get 请求中发送空值的正确方法是什么。

重要提示:我的意思是为请求的特定参数发送 NULL 值,而不是空字符串或缺失字段。 我认为以下选项不正确

http://test.com?param1=&param2=bar      //this is an empty string, not a null
http://test.com?param1=null&param2=bar  //this is a string with content "null"
http://test.com?param2=bar              //param 1 is missing, not null

发送 NULL 在 HTTP 中有意义(并且是标准化的)还是我应该回退到之前的任何选项?在后一种情况下,标准方法是什么

在java时我使用:

URLEncoder.encode(null, "UTF-8")

它崩溃 Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference

我在使用 OkHttp3 库并尝试添加空参数时也遇到了崩溃

FormBody.Builder bodyBuilder = new FormBody.Builder();
bodyBuilder.add("param1",null)

只需使用空白 "" 字符串而不是空参数,如果您在此处添加空参数,它将显示异常,因为它找到一个空值来发送 http 请求

您在问题中没有取消资格的唯一明智选项是没有值的参数。

http://example.com?param1&param2&param3=foo

尽管我会完全不向查询字符串添加 属性,因为它会导致值为 "not having a value",这通常是 null 的意思。