如何在 HTTP POST/GET 中发送空参数
How to send null params in HTTP POST/GET
在 http post/get 请求中发送空值的正确方法是什么。
重要提示:我的意思是为请求的特定参数发送 NULL 值,而不是空字符串或缺失字段。
我认为以下选项不正确
http://test.com?param1=¶m2=bar //this is an empty string, not a null
http://test.com?param1=null¶m2=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¶m2¶m3=foo
尽管我会完全不向查询字符串添加 属性,因为它会导致值为 "not having a value",这通常是 null 的意思。
在 http post/get 请求中发送空值的正确方法是什么。
重要提示:我的意思是为请求的特定参数发送 NULL 值,而不是空字符串或缺失字段。 我认为以下选项不正确
http://test.com?param1=¶m2=bar //this is an empty string, not a null
http://test.com?param1=null¶m2=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¶m2¶m3=foo
尽管我会完全不向查询字符串添加 属性,因为它会导致值为 "not having a value",这通常是 null 的意思。