xrtUrlParse

XRT_API bool xrtUrlParse(xstrview Text, xurl* pUrl);

;
返回:XRT_API bool xrtUrlParse(xstrview Text, xurl* pUrl);

示例已编译验证

/* XRT_API bool xrtUrlParse(xstrview Text, xurl* pUrl); */
result = xrtUrlParse();

xrtUrlAuthorityParse

XRT_API bool xrtUrlAuthorityParse(xstrview Authority, xurl* pUrl);

;
返回:XRT_API bool xrtUrlAuthorityParse(xstrview Authority, xurl* pUrl);

示例已编译验证

/* XRT_API bool xrtUrlAuthorityParse(xstrview Authority, xurl* pUrl); */
result = xrtUrlAuthorityParse();

xrtUrlDefaultPort

返回 HTTP、HTTPS、WS 或 WSS 的默认端口,其他 scheme 返回零。

uint16 xrtUrlDefaultPort(xstrview Scheme);
参数说明
xstrview Scheme协议方案
返回:返回 HTTP、HTTPS、WS 或 WSS 的默认端口,其他 scheme 返回零。

示例已编译验证

/* 返回 HTTP、HTTPS、WS 或 WSS 的默认端口,其他 scheme 返回零。 */
result = xrtUrlDefaultPort(Scheme);

xrtUrlPort

取得可用网络端口;省略或空端口使用已知默认值,超出 uint16 范围失败。

bool xrtUrlPort(const xurl* pUrl, uint16* pPort);
参数说明
const xurl* pUrlURL 文本
uint16* pPort端口
返回:取得可用网络端口;省略或空端口使用已知默认值,超出 uint16 范围失败。

示例已编译验证

/* 取得可用网络端口;省略或空端口使用已知默认值,超出 uint16 范围失败。 */
result = xrtUrlPort(pUrl, pPort);

xrtUrlSchemeIs

按 ASCII 大小写不敏感规则判断 scheme。

bool xrtUrlSchemeIs(const xurl* pUrl, xstrview Scheme);
参数说明
const xurl* pUrlURL 文本
xstrview Scheme协议方案
返回:按 ASCII 大小写不敏感规则判断 scheme。

示例已编译验证

/* 按 ASCII 大小写不敏感规则判断 scheme。 */
result = xrtUrlSchemeIs(pUrl, Scheme);

xrtUrlSecure

判断 URL 是否使用 HTTPS 或 WSS。

bool xrtUrlSecure(const xurl* pUrl);
参数说明
const xurl* pUrlURL 文本
返回:判断 URL 是否使用 HTTPS 或 WSS。

示例已编译验证

/* 判断 URL 是否使用 HTTPS 或 WSS。 */
result = xrtUrlSecure(pUrl);

xrtUrlPortIsDefault

判断显式端口对已知 scheme 为空或等于默认端口。

bool xrtUrlPortIsDefault(const xurl* pUrl);
参数说明
const xurl* pUrlURL 文本
返回:判断显式端口对已知 scheme 为空或等于默认端口。

示例已编译验证

/* 判断显式端口对已知 scheme 为空或等于默认端口。 */
result = xrtUrlPortIsDefault(pUrl);

xrtUrlWrite

XRT_API bool xrtUrlWrite( const xurl* pUrl, void* pOutput, size_t iCapacity, size_t* pSize );

;
返回:XRT_API bool xrtUrlWrite( const xurl* pUrl, void* pOutput, size_t iCapacity, size_t* pSize );

示例已编译验证

/* XRT_API bool xrtUrlWrite( const xurl* pUrl, void* pOutput, size_t iCapacity, size_t* pSize ); */
result = xrtUrlWrite();

xrtUrlBuild

XRT_API str xrtUrlBuild(const xurl* pUrl, size_t* pSize);

;
返回:XRT_API str xrtUrlBuild(const xurl* pUrl, size_t* pSize);

示例已编译验证

/* XRT_API str xrtUrlBuild(const xurl* pUrl, size_t* pSize); */
result = xrtUrlBuild();

xrtUrlAuthorityWrite

写出 authority,不含前导双斜杠或零结尾;空输出可查询长度。

bool xrtUrlAuthorityWrite( const xurl* pUrl, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xurl* pUrlURL 文本
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出 authority,不含前导双斜杠或零结尾;空输出可查询长度。

示例已编译验证

/* 写出 authority,不含前导双斜杠或零结尾;空输出可查询长度。 */
result = xrtUrlAuthorityWrite(pUrl, pOutput, iCapacity, pSize);

xrtUrlHostWrite

写出 host 与显式端口,不含 userinfo 或零结尾;保留显式默认端口。

bool xrtUrlHostWrite( const xurl* pUrl, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xurl* pUrlURL 文本
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出 host 与显式端口,不含 userinfo 或零结尾;保留显式默认端口。

示例已编译验证

/* 写出 host 与显式端口,不含 userinfo 或零结尾;保留显式默认端口。 */
result = xrtUrlHostWrite(pUrl, pOutput, iCapacity, pSize);

xrtUrlTargetWrite

写出 HTTP origin-form target:空路径变为斜杠,query 保留,fragment 丢弃。

bool xrtUrlTargetWrite( const xurl* pUrl, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xurl* pUrlURL 文本
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出 HTTP origin-form target:空路径变为斜杠,query 保留,fragment 丢弃。

示例已编译验证

/* 写出 HTTP origin-form target:空路径变为斜杠,query 保留,fragment 丢弃。 */
result = xrtUrlTargetWrite(pUrl, pOutput, iCapacity, pSize);

xrtUrlPathNormalize

按 RFC 3986 零分配规范化 path;原地或前向重叠可用,失败不修改输出。

bool xrtUrlPathNormalize( xstrview Path, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
xstrview Path路径
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:按 RFC 3986 零分配规范化 path;原地或前向重叠可用,失败不修改输出。

示例已编译验证

/* 按 RFC 3986 零分配规范化 path;原地或前向重叠可用,失败不修改输出。 */
result = xrtUrlPathNormalize(Path, pOutput, iCapacity, pSize);

xrtUrlPathNormalizeBuild

分配零结尾的规范化 URL path;返回值由 xrtFree 释放。

str xrtUrlPathNormalizeBuild( xstrview Path, size_t* pSize );
参数说明
xstrview Path路径
size_t* pSize出:大小
返回:分配零结尾的规范化 URL path;返回值由 xrtFree 释放。

示例已编译验证

/* 分配零结尾的规范化 URL path;返回值由 xrtFree 释放。 */
result = xrtUrlPathNormalizeBuild(Path, pSize);

xrtUrlResolve

零分配解析 RFC 3986 引用;Base 必须含 scheme,输出不得覆盖输入。

bool xrtUrlResolve( const xurl* pBase, xstrview Reference, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xurl* pBase基准
xstrview ReferenceReference 参数
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:零分配解析 RFC 3986 引用;Base 必须含 scheme,输出不得覆盖输入。

示例已编译验证

/* 零分配解析 RFC 3986 引用;Base 必须含 scheme,输出不得覆盖输入。 */
result = xrtUrlResolve(pBase, Reference, pOutput, iCapacity, pSize);

xrtUrlResolveBuild

单次分配零结尾的解析结果;返回值由 xrtFree 释放。

str xrtUrlResolveBuild( const xurl* pBase, xstrview Reference, size_t* pSize );
参数说明
const xurl* pBase基准
xstrview ReferenceReference 参数
size_t* pSize出:大小
返回:单次分配零结尾的解析结果;返回值由 xrtFree 释放。

示例已编译验证

/* 单次分配零结尾的解析结果;返回值由 xrtFree 释放。 */
result = xrtUrlResolveBuild(pBase, Reference, pSize);

xrtUrlParamValid

无分配验证 HTTP 参数解码后的语义值是完整 RFC 3986 URI-reference。

bool xrtUrlParamValid(const xhttpparam* pParam);
参数说明
const xhttpparam* pParam参数
返回:无分配验证 HTTP 参数解码后的语义值是完整 RFC 3986 URI-reference。

示例已编译验证

/* 无分配验证 HTTP 参数解码后的语义值是完整 RFC 3986 URI-reference。 */
result = xrtUrlParamValid(pParam);