URL 接口的使用

本文档介绍了CURLURL API的使用方法,包括如何创建和清理URL句柄,设置和获取URL的不同部分,如主机、方案、用户、密码、端口、路径、查询和片段。此外,还详细阐述了如何进行URL解析、重定向以及如何追加查询字符串。CURLURL API在libcurl 7.62.0版本中引入,为开发者提供了方便的URL处理功能。
摘要由CSDN通过智能技术生成

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

curl

描述

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

包括

您仍然只在代码中包含 <curl/curl.h>。

创造

使用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 中引入的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值