Class UrlQuery

java.lang.Object
org.miaixz.bus.core.net.url.UrlQuery

public class UrlQuery extends Object
URL中查询字符串部分的封装,类似于:
   key1=v1&key2=&key3=v3
 
查询封装分为解析查询字符串和构建查询字符串,解析可通过charset为null来自定义是否decode编码后的内容, 构建则通过charset是否为null是否encode参数键值对
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • ALL

      public static final PercentCodec ALL
      query中的value,默认除"-", "_", ".", "*"外都编码 这个类似于JDK提供的URLEncoder
  • Constructor Details

    • UrlQuery

      public UrlQuery(Map<? extends CharSequence,?> queryMap, UrlQuery.EncodeMode encodeMode)
      构造
      Parameters:
      queryMap - 初始化的查询键值对
      encodeMode - 编码模式
  • Method Details

    • of

      public static UrlQuery of(String query, Charset charset)
      构建UrlQuery
      Parameters:
      query - 初始化的查询字符串
      charset - decode用的编码,null表示不做decode
      Returns:
      UrlQuery
    • of

      public static UrlQuery of(String query, Charset charset, boolean autoRemovePath)
      构建UrlQuery
      Parameters:
      query - 初始化的查询字符串
      charset - decode用的编码,null表示不做decode
      autoRemovePath - 是否自动去除path部分,true则自动去除第一个?前的内容
      Returns:
      UrlQuery
    • of

      public static UrlQuery of(String query, Charset charset, boolean autoRemovePath, UrlQuery.EncodeMode encodeMode)
      构建UrlQuery
      Parameters:
      query - 初始化的查询字符串
      charset - decode用的编码,null表示不做decode
      autoRemovePath - 是否自动去除path部分,true则自动去除第一个?前的内容
      encodeMode - 编码模式。
      Returns:
      UrlQuery
    • of

      public static UrlQuery of()
      构建UrlQuery
      Returns:
      UrlQuery
    • of

      public static UrlQuery of(UrlQuery.EncodeMode encodeMode)
      构建UrlQuery
      Parameters:
      encodeMode - 编码模式
      Returns:
      UrlQuery
    • of

      public static UrlQuery of(Map<? extends CharSequence,?> queryMap)
      构建UrlQuery
      Parameters:
      queryMap - 初始化的查询键值对
      Returns:
      UrlQuery
    • of

      public static UrlQuery of(Map<? extends CharSequence,?> queryMap, UrlQuery.EncodeMode encodeMode)
      构建UrlQuery
      Parameters:
      queryMap - 初始化的查询键值对
      encodeMode - 编码模式
      Returns:
      UrlQuery
    • setEncodeMode

      public UrlQuery setEncodeMode(UrlQuery.EncodeMode encodeMode)
      设置编码模式 根据不同场景以及不同环境,对Query中的name和value采用不同的编码策略
      Parameters:
      encodeMode - 编码模式
      Returns:
      this
    • add

      public UrlQuery add(CharSequence key, Object value)
      增加键值对
      Parameters:
      key - 键
      value - 值,集合和数组转换为逗号分隔形式
      Returns:
      this
    • addAll

      public UrlQuery addAll(Map<? extends CharSequence,?> queryMap)
      批量增加键值对
      Parameters:
      queryMap - query中的键值对
      Returns:
      this
    • remove

      public UrlQuery remove(CharSequence key)
      移除键及对应所有的值
      Parameters:
      key - 键
      Returns:
      this
    • parse

      public UrlQuery parse(String query, Charset charset)
      解析URL中的查询字符串
      Parameters:
      query - 查询字符串,类似于key1=v1&key2=&key3=v3
      charset - decode编码,null表示不做decode
      Returns:
      this
    • parse

      public UrlQuery parse(String query, Charset charset, boolean autoRemovePath)
      解析URL中的查询字符串
      Parameters:
      query - 查询字符串,类似于key1=v1&key2=&key3=v3
      charset - decode编码,null表示不做decode
      autoRemovePath - 是否自动去除path部分,true则自动去除第一个?前的内容
      Returns:
      this
    • getQueryMap

      public Map<CharSequence,CharSequence> getQueryMap()
      获得查询的Map
      Returns:
      查询的Map,只读
    • get

      public CharSequence get(CharSequence key)
      获取查询值
      Parameters:
      key - 键
      Returns:
    • build

      public String build(Charset charset)
      构建URL查询字符串,即将key-value键值对转换为key1=v1&key2=v2&key3=v3形式。 对于null处理规则如下:
      • 如果key为null,则这个键值对忽略
      • 如果value为null,只保留key,如key1对应value为null生成类似于key1&key2=v2形式
      Parameters:
      charset - encode编码,null表示不做encode编码
      Returns:
      URL查询字符串
    • build

      public String build(PercentCodec keyCoder, PercentCodec valueCoder, Charset charset)
      构建URL查询字符串,即将key-value键值对转换为key1=v1&key2=v2&key3=v3形式。 对于null处理规则如下:
      • 如果key为null,则这个键值对忽略
      • 如果value为null,只保留key,如key1对应value为null生成类似于key1&key2=v2形式
      Parameters:
      keyCoder - 键值对中键的编码器
      valueCoder - 键值对中值的编码器
      charset - encode编码,null表示不做encode编码
      Returns:
      URL查询字符串
    • toString

      public String toString()
      生成查询字符串,类似于aaa=111&bbb=222 此方法不对任何特殊字符编码,仅用于输出显示
      Overrides:
      toString in class Object
      Returns:
      查询字符串