首页 > 解决方案 > 有没有办法为 cURL 启用自定义 URL 方案支持?

问题描述

我用自己的自定义 URL 方案制作了一个应用程序,我注意到 cURL 根本无法识别自定义 URL 方案。例如,如果您尝试在 cURL 上访问 Telegram 自定义协议方案的此链接:

curl --url tg://resolve?domain=telegram

它根本不起作用,错误说明:

curl:(1)libcurl中不支持或禁用协议“tg”

我已经搜索了 curl 手册页,但找不到任何关于它的信息。有没有办法为 cURL 或 cURL 启用自定义 URL 方案只是没有那种功能?

编辑:Invoke-WebRequest 和 Invoke-RestMethod 等 Powershell cmdlet 也是如此。

编辑 2:我希望 cURL 调用我的自定义 URL 方案,而不是 Telegram 方案。

标签: powershellurlcurllibcurl

解决方案


我认为您将两种或多种事物混合在一起。首先,您有一个名为 unix 的程序curl,如果您在 windows 中有 unix 程序,它将为您提供:

C:\>curl --url tg://resolve?domain=telegram
curl: (1) Protocol "tg" not supported or disabled in libcurl

curl支持这些协议

协议

curl 支持多种协议,或者用 URL 术语表示:方案。您的特定版本可能无法全部支持。

信息和通信技术

让您使用在线词典查找单词。

文件

读取或写入本地文件。curl 不支持远程访问 file:// URL,但在 Microsoft Windows 上运行时使用本机 UNC 方法将起作用。

FTP(S)

curl 通过许多调整和杠杆支持文件传输协议。使用或不使用 TLS。

地鼠

检索文件。

HTTP(S)

curl 支持具有多种选项和变体的 HTTP。它可以使用 HTTP 版本 0.9、1.0、1.1、2 和 3,具体取决于构建选项和正确的命令行选项。

IMAP(S)

使用邮件阅读协议,curl 可以为您“下载”电子邮件。使用或不使用 TLS。

LDAP(S)

curl 可以为您进行目录查找,无论是否使用 TLS。

MQTT

curl 支持 MQTT 版本 3。通过 MQTT 下载等于“订阅”主题,而上传/发布等于“发布”主题。MQTT 支持是实验性的,不支持基于 TLS 的 MQTT(尚)。

POP3(小)

从 pop3 服务器下载意味着收到邮件。使用或不使用 TLS。

RTMP(S)

Realtime Messaging Protocol 主要用于服务器流媒体,curl 可以下载它。

RTSP

curl 支持 RTSP 1.0 下载。

SCP

curl 支持 SSH 版本 2 scp 传输。

SFTP

curl 支持通过 SSH 版本 2 完成的 SFTP(草案 5)。

中小企业

curl 支持 SMB 版本 1 进行上传和下载。

SMTP(S)

将内容上传到 SMTP 服务器意味着发送电子邮件。有或没有 TLS。

远程网络

告诉 curl 获取一个 telnet URL 会启动一个交互式会话,在该会话中它将读取到的内容发送到标准输入并输出服务器发送的内容。

TFTP

curl 可以进行 TFTP 下载和上传。

您的电报协议不在受支持的协议中,因此您收到错误消息。

PowerShell 输出:

curl --url tg://resolve?domain=telegram curl: (1) Protocol "tg" not supported or disabled in libcurl
Invoke-WebRequest : A positional parameter cannot be found that accepts argument 'tg://resolve?domain=te legram'.
At line:1 char:1
+ curl --url tg://resolve?domain=telegram curl: (1) Protocol "tg" not s ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeWebReques
   tCommand

第二部分是curlin powershell,它只是Invoke-WebRequest. 这仅支持 HTTP 或 HTTPS。有关更多信息,请参阅ms 文档Invoke-WebRequest

Invoke-RestMethod类似于Invoke-WebRequest它向 RESTful Web 服务发送 HTTP 或 HTTPS 请求。不同之处在于 RESTful 部分。

结论

你不走运,除非有人决定将tg://协议支持添加到 unix/linuxcurl中。


推荐阅读