网址(URL)函数库。
inet.http,inet.whttp 以及所有 web.rest 客户端都已经自动导入 inet.url 。
拼接 URL 路径
支持不定个数参数。
参数 @1 可指定完整 URL,或仅指定 URL 路径部分(不会自动添加 http:// 前缀)。
参数 @1 以及除最后一个参数以外的参数无论是否以/字符结束都认为是一个目录名。
此函数唯一的作用是在路径之间添加斜杠并避免出现重复的斜杠,同时将反斜杠替换为正斜杠。
不会置换路径中包含的 .. 和 .。
在 URL 后追加参数。
如果参数 @2 是 null 或空字符串则直接返回参数 @url。
参数 @2 首字符是?号时会被自动移除。
参数 @2 也可以指定一个包含多个参数键值对的表。
如果 @url 参数仅指定路径而非合法 URL,
则简单添加 ? 号或 & 分隔符以后后拼接参数
URL规范化转换
参数@3指定转换选项
URL规范化转换
扩展和适当置换路径中包含的所有 .. 和 .
比较参数@1与参数@2指定的网址是否相同。
相同则返回 0 ,否则返回其他数值。
比较前进行 URL 解码,并调用 inet.url.canonicalize 规范格式,
比较时忽略大小写
URL解码并返回文本,失败返回空值。
需要特别注意,解码时会将 + 转换为空格。
如果不希望转换 + 符号,可改用 string.unhex(str,"%") 解码
解码 %uXXXX 或 %uXX 编码的字符串
失败返回空值
如果参数不是 null 值则返回 URL 编码。
除字母数字以及-._~等非保留字符以外的字符进行 URL 编码。
遵守 RFC 3986 标准。
参数传入 null 返回空字符串 "",
传入其他值自动转换为字符串。
如果字符串包含多字节字符,
使用 URL 编码其中的汉字和 % 符号
如果参数不是 null 值则返回 URL 编码。
URL 路径分隔符 / 以外的所有字符按 RFC3986 标准编码。
也就是编码除 编码除字母、数字、-._~,以及 / 以外的所有字符
URL编码,
字母数字以及 URL 非保留字符、URL 保留字符都不编码(依据 RFC 2396 旧标准)。
与 JavaScript 的 encodeURI 执行相同规则。
获取URL中的文件名
参数2可选,默认为"index.html"
如果 URL 为 file: 协议开头,
则返回 URL 解码后的文件路径,否则返回 null。
传入 null 参数返回 null。
返回 URL 的参数表,参数名都转为小写。
参数 @1 指定 URL,如果不指定则直接返回 null 。
如果参数 @1 指定了参数名(忽略大小写),则返回对应的字符串值
返回哈希数值
检测参数 @url 是否 URL 格式字符串。
参数 @2 可指定为以下值:
0/*_URLIS_URL*/: 默认值,仅检测字符串是否始于格式正确的 URL 协议头(例如file:)。-1/*_URLIS_HTTP*/: 字符串以 http: 或 https: 开始时返回 true(忽略大小写)。3/*_URLIS_FILEURL*/: 字符串是否为以 file: 协议头开始的 URL。5/*_URLIS_DIRECTORY*/: 字符串指定的 URL 是否指向目录(指以斜杠或反斜杠结尾)6/*_URLIS_HASQUERY*/: 字符串指定的 URL 是否包含 URL 参数4/*_URLIS_APPLIABLE*/ 时无效当对于当前 URL 的相对路径转换为完整 URL 。
将当前 URL 的所在目录作为参考目录,
将参数 @2 指定的相对路径转换为完整 URL 。
参数 @1 必须指定完整 URL,未指定协议时自动添加 http:// 前缀。
扩展和适当置换路径中包含的所有 ".." 和 "."。
相对路径如果为空则直接返回参数 @1。
可选使用参数 @3 指定转换选项
重新排序 URL 参数,首字符为问号时自动移除。
参数 @1 可以指定包含名值对的表或者字符串格式的 URL 请求参数。
可选用参数 @2 指定排序函数,排序函数的要求与用法与 table.eachName 相同
拆分 URL 获取各部分的信息,返回 URL 表对象。
拆分 URL 并返回包含协议、路径、端口、参数等的URL 表对象。
返回的表对象可以调用 tostring 重新生成 URL。
参数 @url 可传入空值以获取用于拼接 URL 的表。
如果可选的参数 @sortExtraInfo 为 true ,
则将 extraInfo 包含的请求参按以字段名称的字典序重新排序。
指定与 inet.url.split 返回表结构相同的表。
函数会创建新的URL 表对象,并将参数表复制到新的URL 表对象中。
返回对象的属性方法与拆分 URL 返回的URL 表对象相同,拥有相同的元表、属性、方法。
有时候将 inet.url.split 返回的URL 表对象存储传输或跨线程传输会被转换为纯表。
这个函数的作用是将纯表还原为URL 表对象。
解析 URL 查询参数格式字符串并返回名值对组成的表对象,作用类似 JS 里的 URLSearchParams 。
所有参数名字都转换为小写,改用 inet.url.splitParametersCs 则保留大小写。
如果名字尾部有 [] 或 [键名] 则将值转换为表或数组。
如果只指定名字不指定值,则值为空字符串
返回的表对象可增删修改,作为参数传入 tostring 可再次序列化为 URL 查询参数格式字符串。
调用 inet.url.stringifyParameters 也可以序列化表对象为这种格式的字符串。
反序列化查询参数格式字符串( 也是 x-www-form-urlencoded 表单编码格式)。
拆分 URL 查询参数格式的字符串 @urlSearchParams(可以为空字符串),并返回表对象。
@delimiter 指定参数分隔符,支持模式语法,默认为\&。
如果不指定 @delimiter, 并且首字符是?号,则自动移除开始的 ? 号。
使用 UrlEncode 格式解码 @urlSearchParams 中的键值,
参数 @reserved 为保留参数,仅占位。
参数 @arrayKeys 可选指定一个总是返回为数组值的参数名称数组,
如果 @urlSearchParams 里的参数名尾部有点号加数值则自动移除。
解析 URL 查询参数格式字符串并返回名值对组成的表对象。
所有参数名字保留原大小写不变,
改用 inet.url.splitParameters 则转为小写。
如果名字尾部有 [] 或 [键名] 则将值转换为表或数组。
如果只指定名字不指定值,则值为空字符串
返回的表对象可增删修改,作为参数传入 tostring 可再次序列化为 URL 查询参数格式字符串。
反序列化查询参数格式字符串( 也是 x-www-form-urlencoded 表单编码格式),参数名保留大小写不变。
拆分 URL 查询参数格式的字符串 @urlSearchParams(可以为空字符串),并返回表对象。
@delimiter 指定参数分隔符,支持模式语法,默认为\&。
如果不指定 @delimiter, 并且首字符是?号,则自动移除开始的 ? 号。
使用 UrlEncode 格式解码 @urlSearchParams 中的键值,
参数 @reserved 为保留参数,仅占位。
参数 @arrayKeys 可选指定一个总是返回为数组值的参数名称数组,
如果 @urlSearchParams 里的参数名尾部有点号加数值则自动移除。
inet.url.stringify(
scheme = "https";
user = "";
password ="";
host ="/*使用参数表构建并返回URL字符串*/";
location = "";
extraInfo = {
name = value;
};
)
将表对象转换为 URL 查询参数格式的字符串。
使用 inet.url.splitParameters 可重新解析这种格式的字符串并返回表对象。
序列化参数表为 URL 查询参数格式的字符串( 也是 x-www-form-urlencoded 表单编码格式)。
使用=分隔单个参数里的键值对,使用&分隔多个参数。
如果值为表且未定义 _tostring 元方法,则转换为多个键值对,
每个键值对由参数名[]=值或参数名[子键名]=值组成。
如果参数名对应的值为函数则调用该函数取返回值。
所有参数值转换为字符串并使用 UrlEncode 编码。
保留参数仅占位(当前忽略),省略排序函数则使用默认字典序排序。
附加的 URL 参数,\不包含#号后面的网页位置。
如果有 URL 参数,这里首字符默认会是?号。
如果拆分 URL 时指定了 sortExtraInfo 参数为 true,
则 URL 参数按字段名称的字典序排序,并且首字符的号被移除。。
在调用 tostring 将 对象重新合并为 URL 时:
不要求 extraInfo 第一个字符是?号,合并时会自动判断是否要插入?号。
如果 extraInfo指定表对象,则自动转换为字符串格式的请求参数。
不同的参数按参数名字的字典序排序,并在前面添加?号。
实际上就是自动调用 inet.url.stringifyParameters 。
域名
URL 的 # 号后标明网页位置(page location)的片断标识符(fragment ID),不包含 # 号
密码
文件路径;
端口
协议,总是转换为小写
协议(数值)。
可用值为 INTERNET_SCHEME 前缀的常量定义。
重新拼接 URL 时忽略此参数
用户名
_INTERNET_SCHEME_DEFAULT=0x0
_INTERNET_SCHEME_FILE=5
_INTERNET_SCHEME_FIRST=1
_INTERNET_SCHEME_FTP=1
_INTERNET_SCHEME_GOPHER=2
_INTERNET_SCHEME_HTTP=3
_INTERNET_SCHEME_HTTPS=4
_INTERNET_SCHEME_JAVASCRIPT=9
_INTERNET_SCHEME_LAST=0xB
_INTERNET_SCHEME_MAILTO=7
_INTERNET_SCHEME_NEWS=6
_INTERNET_SCHEME_PARTIAL=0xFFFFFFFE
_INTERNET_SCHEME_RES=0xB
_INTERNET_SCHEME_SOCKS=8
_INTERNET_SCHEME_UNKNOWN=0xFFFFFFFF
_INTERNET_SCHEME_VBSCRIPT=0xA
_URLIS_URL=0x0
_URL_APPLY_DEFAULT=1
_URL_APPLY_FORCEAPPLY=8
_URL_APPLY_GUESSFILE=4
_URL_APPLY_GUESSSCHEME=2
_URL_BROWSER_MODE=0x2000000
_URL_CONVERT_IF_DOSPATH=0x200000
_URL_DONT_ESCAPE_EXTRA_INFO=0x2000000
_URL_DONT_SIMPLIFY=0x8000000
_URL_DONT_UNESCAPE=0x20000
_URL_DONT_UNESCAPE_EXTRA_INFO=0x2000000
_URL_ESCAPE_AS_UTF8=0x40000
_URL_ESCAPE_PERCENT=0x1000
_URL_ESCAPE_SEGMENT_ONLY=0x2000
_URL_ESCAPE_SPACES_ONLY=0x4000000
_URL_ESCAPE_UNSAFE=0x20000000
_URL_FILE_USE_PATHURL=0x10000
_URL_INTERNAL_PATH=0x800000
_URL_NO_META=0x8000000
_URL_PARTFLAG_KEEPSCHEME=1
_URL_PLUGGABLE_PROTOCOL=0x40000000
_URL_UNESCAPE=0x10000000
_URL_UNESCAPE_HIGH_ANSI_ONLY=0x400000
_URL_WININET_COMPATIBILITY=0x80000000