Class UrlBuilder

java.lang.Object
org.miaixz.bus.core.net.url.UrlBuilder
All Implemented Interfaces:
Serializable, Builder<String>

public final class UrlBuilder extends Object implements Builder<String>
URL 生成器,格式形如:
 [scheme:]scheme-specific-part[#fragment]
 [scheme:][//authority][path][?query][#fragment]
 [scheme:][//host:port][path][?query][#fragment]
 
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • UrlBuilder

      public UrlBuilder()
      构造
    • UrlBuilder

      public UrlBuilder(String scheme, String host, int port, UrlPath path, UrlQuery query, String fragment, Charset charset)
      构造
      Parameters:
      scheme - 协议,默认http
      host - 主机,例如127.0.0.1
      port - 端口,-1表示默认端口
      path - 路径,例如/aa/bb/cc
      query - 查询,例如a=1&b=2
      fragment - 标识符例如#后边的部分
      charset - 编码,用于URLEncode和URLDecode,null表示不编码
  • Method Details

    • of

      public static UrlBuilder of(UrlBuilder builder)
      使用UrlBuilder构建UrlBuilder
      Parameters:
      builder - UrlBuilder
      Returns:
      UrlBuilder
    • of

      public static UrlBuilder of(URI uri, Charset charset)
      使用URI构建UrlBuilder
      Parameters:
      uri - URI
      charset - 编码,用于URLEncode和URLDecode
      Returns:
      UrlBuilder
    • ofHttpWithoutEncode

      public static UrlBuilder ofHttpWithoutEncode(String httpUrl)
      使用URL字符串构建UrlBuilder,当传入的URL没有协议时,按照http协议对待 此方法不对URL编码
      Parameters:
      httpUrl - URL字符串
      Returns:
      UrlBuilder
    • ofHttp

      public static UrlBuilder ofHttp(String httpUrl)
      使用URL字符串构建UrlBuilder,当传入的URL没有协议时,按照http协议对待,编码默认使用UTF-8
      Parameters:
      httpUrl - URL字符串
      Returns:
      UrlBuilder
    • ofHttp

      public static UrlBuilder ofHttp(String httpUrl, Charset charset)
      使用URL字符串构建UrlBuilder,当传入的URL没有协议时,按照http协议对待。
      • 如果url用户传入的URL没有做编码,则charset设置为null,此时URL不会解码,在build时也不会编码。
      • 如果url已经编码,或部分编码,则需要设置charset,此时URL会解码编码后的参数,在build时也会编码。
      • 如果url未编码,且存在歧义字符串,则需要设置charset为null,并调用setCharset(java.nio.charset.Charset)在build时编码URL。
      Parameters:
      httpUrl - URL字符串
      charset - 编码,用于URLEncode和URLDecode,如果为null,则不对传入的URL解码
      Returns:
      UrlBuilder
    • of

      public static UrlBuilder of(String url)
      使用URL字符串构建UrlBuilder,默认使用UTF-8编码 注意:此方法如果提供的URL为非网络协议,自动尝试使用文件协议
      Parameters:
      url - URL字符串
      Returns:
      UrlBuilder
    • of

      public static UrlBuilder of(String url, Charset charset)
      使用URL字符串构建UrlBuilder,规则如下:
      • 如果url用户传入的URL没有做编码,则charset设置为null,此时URL不会解码,在build时也不会编码。
      • 如果url已经编码,或部分编码,则需要设置charset,此时URL会解码编码后的参数,在build时也会编码。
      • 如果url未编码,且存在歧义字符串,则需要设置charset为null,并调用setCharset(java.nio.charset.Charset)在build时编码URL。
    • of

      public static UrlBuilder of(URL url, Charset charset)
      使用URL构建UrlBuilder
      Parameters:
      url - URL
      charset - 编码,用于URLEncode和URLDecode,null表示不解码
      Returns:
      UrlBuilder
    • of

      public static UrlBuilder of(String scheme, String host, int port, String path, String query, String fragment, Charset charset)
      构建UrlBuilder
      Parameters:
      scheme - 协议,默认http
      host - 主机,例如127.0.0.1
      port - 端口,-1表示默认端口
      path - 路径,例如/aa/bb/cc
      query - 查询,例如a=1&b=2
      fragment - 标识符例如#后边的部分
      charset - 编码,用于URLEncode和URLDecode
      Returns:
      UrlBuilder
    • of

      public static UrlBuilder of(String scheme, String host, int port, UrlPath path, UrlQuery query, String fragment, Charset charset)
      构建UrlBuilder
      Parameters:
      scheme - 协议,默认http
      host - 主机,例如127.0.0.1
      port - 端口,-1表示默认端口
      path - 路径,例如/aa/bb/cc
      query - 查询,例如a=1&b=2
      fragment - 标识符例如#后边的部分
      charset - 编码,用于URLEncode和URLDecode
      Returns:
      UrlBuilder
    • of

      public static UrlBuilder of()
      创建空的UrlBuilder
      Returns:
      UrlBuilder
    • getScheme

      public String getScheme()
      获取协议,例如http
      Returns:
      协议,例如http
    • setScheme

      public UrlBuilder setScheme(String scheme)
      设置协议,例如http
      Parameters:
      scheme - 协议,例如http
      Returns:
      this
    • getSchemeWithDefault

      public String getSchemeWithDefault()
      获取协议,例如http,如果用户未定义协议,使用默认的http协议
      Returns:
      协议,例如http
    • getHost

      public String getHost()
      获取 主机,例如127.0.0.1
      Returns:
      主机,例如127.0.0.1
    • setHost

      public UrlBuilder setHost(String host)
      设置主机,例如127.0.0.1
      Parameters:
      host - 主机,例如127.0.0.1
      Returns:
      this
    • getPort

      public int getPort()
      获取端口,默认-1
      Returns:
      端口,默认-1
    • setPort

      public UrlBuilder setPort(int port)
      设置端口,默认-1
      Parameters:
      port - 端口,默认-1
      Returns:
      this
    • getPortWithDefault

      public int getPortWithDefault()
      获取端口,如果未自定义返回协议默认端口
      Returns:
      端口
    • getAuthority

      public String getAuthority()
      获得authority部分
      Returns:
      authority部分
    • getPath

      public UrlPath getPath()
      获取路径,例如/aa/bb/cc
      Returns:
      路径,例如/aa/bb/cc
    • setPath

      public UrlBuilder setPath(UrlPath path)
      设置路径,例如/aa/bb/cc,将覆盖之前所有的path相关设置
      Parameters:
      path - 路径,例如/aa/bb/cc
      Returns:
      this
    • getPaths

      public String getPaths()
      获得路径,例如/aa/bb/cc
      Returns:
      路径,例如/aa/bb/cc
    • addPath

      public UrlBuilder addPath(CharSequence path)
      增加路径,在现有路径基础上追加路径
      Parameters:
      path - 路径,例如aaa/bbb/ccc
      Returns:
      this
    • setWithEndTag

      public UrlBuilder setWithEndTag(boolean withEngTag)
      是否path的末尾加 /
      Parameters:
      withEngTag - 是否path的末尾加 /
      Returns:
      this
    • addPathSegment

      public UrlBuilder addPathSegment(CharSequence segment)
      增加路径节点,路径节点中的"/"会被转义为"%2F"
      Parameters:
      segment - 路径节点
      Returns:
      this
    • getQuery

      public UrlQuery getQuery()
      获取查询语句,例如a=1&b=2 可能为null
      Returns:
      查询语句,例如a=1&b=2,可能为null
    • setQuery

      public UrlBuilder setQuery(UrlQuery query)
      设置查询语句,例如a=1&b=2,将覆盖之前所有的query相关设置
      Parameters:
      query - 查询语句,例如a=1&b=2
      Returns:
      this
    • getQuerys

      public String getQuerys()
      获取查询语句,例如a=1&b=2
      Returns:
      查询语句,例如a=1&b=2
    • addQuery

      public UrlBuilder addQuery(String key, Object value)
      添加查询项,支持重复键,默认非严格模式
      Parameters:
      key - 键
      value - 值
      Returns:
      this
    • getFragment

      public String getFragment()
      获取标识符,#后边的部分
      Returns:
      标识符,例如#后边的部分
    • setFragment

      public UrlBuilder setFragment(String fragment)
      设置标识符,例如#后边的部分
      Parameters:
      fragment - 标识符,例如#后边的部分
      Returns:
      this
    • getFragmentEncoded

      public String getFragmentEncoded()
      获取标识符,#后边的部分
      Returns:
      标识符,例如#后边的部分
    • getCharset

      public Charset getCharset()
      获取编码,用于URLEncode和URLDecode
      Returns:
      编码
    • setCharset

      public UrlBuilder setCharset(Charset charset)
      设置编码,用于URLEncode和URLDecode
      Parameters:
      charset - 编码
      Returns:
      this
    • build

      public String build()
      创建URL字符串
      Specified by:
      build in interface Builder<String>
      Returns:
      URL字符串
    • toURL

      public URL toURL()
      转换为URL 对象
      Returns:
      URL
    • toURL

      public URL toURL(URLStreamHandler handler)
      转换为URL 对象
      Parameters:
      handler - URLStreamHandler,null表示默认
      Returns:
      URL
    • toURI

      public URI toURI()
      转换为URI
      Returns:
      URI
    • toString

      public String toString()
      Overrides:
      toString in class Object