URL 接口的使用

这个文档是小编在curl官网上使用谷歌翻译翻译的,详细信息看官网

curl

描述

URL 接口提供解析和生成 URL 的功能。

包括

您仍然只在代码中包含

创造

使用curl_url创建一个包含 URL 信息和资源的句柄:

CURLU *h = curl_url();

清理

完成后,使用curl_url_cleanup进行清理:

curl_url_cleanup(h);

复制

当您需要句柄的副本时,只需使用curl_url_dup复制它:

CURLU *nh = curl_url_dup(h);

解析

通过使用curl_url_set将 URL “设置”到句柄,URL 被解析并存储在句柄中。如果 URL 在语法上不正确,它将返回错误。

rc = curl_url_set(h, CURLUPART_URL, "https://example.com:449/foo/bar?name=moo", 0);

第四个参数中的零是用于更改特定功能的位掩码。

如果成功,这会将 URL 存储在句柄内的各个部分中。

重定向

当句柄已经包含有关 URL 的信息时,设置相对 URL 将使其“重定向”以适应它。

rc = curl_url_set(h, CURLUPART_URL, "../test?another", 0);

获取网址

`CURLU` 句柄代表一个 URL,您可以使用curl_url_get轻松提取它:

字符 *url; rc = curl_url_get(h, CURLUPART_URL, &url, 0); curl_free(url);

第四个参数中的零是用于更改特定功能的位掩码。

获取零件

解析 URL 或设置部分后,您可以随时从句柄中提取这些部分。

rc = curl_url_get(h, CURLUPART_HOST, &host, 0);

rc = curl_url_get(h, CURLUPART_SCHEME, &scheme, 0);

rc = curl_url_get(h, CURLUPART_USER, &user, 0);

rc = curl_url_get(h, CURLUPART_PASSWORD, &password, 0);

rc = curl_url_get(h, CURLUPART_PORT, &port, 0);

rc = curl_url_get(h, CURLUPART_PATH, &path, 0);

rc = curl_url_get(h, CURLUPART_QUERY, &query, 0);

rc = curl_url_get(h, CURLUPART_FRAGMENT, &fragment, 0);

除非用户在第四个位掩码参数中设置了 CURLU_URLDECODE 标志,否则不会对提取的部分进行 URL 解码。

完成后记得使用curl_free释放返回的字符串!

设置零件

用户设置单独的 URL 部分,或者在解析完整的 URL 之后,或者没有解析这样的部分。

rc = curl_url_set(urlp, CURLUPART_HOST, "www.example.com", 0);

rc = curl_url_set(urlp, CURLUPART_SCHEME, "https", 0);

rc = curl_url_set(urlp, CURLUPART_USER, "约翰", 0);

rc = curl_url_set(urlp, CURLUPART_PASSWORD, "doe", 0);

rc = curl_url_set(urlp, CURLUPART_PORT, "443", 0);

rc = curl_url_set(urlp, CURLUPART_PATH, "/index.html", 0);

rc = curl_url_set(urlp, CURLUPART_QUERY, "name=john", 0);

rc = curl_url_set(urlp, CURLUPART_FRAGMENT, "锚点", 0);

除非用户使用 `CURLU_URLENCODE` 标志请求它,否则集合部分不是 URL 编码的。

追加查询

应用程序可以将字符串附加到查询部分的右端,并将 `CURLU_APPENDQUERY` 标志添加到curl_url_set。

想象一个持有 URL https://example.com/?shoes=2 的句柄。然后应用程序可以将字符串 `hat=1` 添加到查询部分,如下所示:

rc = curl_url_set(urlp, CURLUPART_QUERY, "hat=1", CURLU_APPENDQUERY);

它甚至会注意到缺少与号(&)分隔符,因此它也会注入一个,并且句柄的完整 URL 将等于https://example.com/?shoes=2&hat=1

附加的字符串当然也可以在添加时获得 URL 编码,如果被要求进行 URL 编码,编码过程将跳过“=”字符。例如,将 `candy=N&N` 附加到我们已有的内容中,并对其进行 URL 编码以处理数据中的 & 符号:

rc = curl_url_set(urlp, CURLUPART_QUERY, "candy=N&N", CURLU_APPENDQUERY | CURLU_URLENCODE);

现在 URL 看起来像

https://example.com/?shoes=2&hat=1&candy=N%26N`

可用性

URL API 是在 libcurl 7.62.0 中引入的。

你可能感兴趣的:(Libcurl,网络协议,网络)