通过 telnet 连接使用 Curl 调用 Web 服务

use*_*619 2 curl telnet webservice-client

现在我正在尝试使用来自 Unix 平台的 Curl 命令调用 Web 服务。Web 服务在外部服务器上可用。我只能使用 telnet 连接外部服务器。Web 服务使用基本身份验证,我必须提供用户名和密码。

任何人都可以帮助我以正确的方式执行此操作吗?

Edd*_*die 7

如果您不需要 curl,而只想通过 telnet 连接测试本地 Web 服务,您只需键入适当的 HTTP 命令。

$ telnet remotehost 80
Trying IP.IP.IP.IP...
Connected to remotehost.
Escape character is '^]'.
GET / HTTP/1.0
Content-Type: text/xml;charset=UTF-8
SOAPAction:urn:login
Authorization: Basic base64encodedstring


# need 2 carriage returns above to denote completion of request body.
Run Code Online (Sandbox Code Playgroud)

但是,如果您出于任何原因想要 curl,似乎 Curls 的“TELNET”功能可以通过 telnet 连接传递 curl 命令。

curl telnet://remotehost

TELNET curl telnet 支持是基本的并且非常易于使用。Curl 将通过标准输入传递给它的所有数据传递到远程服务器。使用类似于以下内容的命令行连接到远程 telnet 服务器:

    curl telnet://remote.server.com
Run Code Online (Sandbox Code Playgroud)

并在标准输入上输入要传递给服务器的数据。结果将发送到 stdout 或您使用 -o 指定的文件。您可能希望 -N/--no-buffer 选项为慢速连接或类似情况关闭缓冲输出。使用 -t 选项将选项传递给 telnet 协议协商。要告诉服务器我们使用 vt100 终端,请尝试以下操作:

    curl -tTTYPE=vt100 telnet://remote.server.com
Run Code Online (Sandbox Code Playgroud)

它的其他有趣选项 -t 包括:

  • XDISPLOC= 设置 X 显示位置。

  • NEW_ENV= 设置环境变量。注意:telnet 协议没有指定任何使用指定用户和密码登录的方式,因此 curl 无法自动执行此操作。为此,您需要跟踪收到登录提示的时间并相应地发送用户名和密码。