【问题标题】:Calling Web service using Curl with telnet connection使用带有 Telnet 连接的 Curl 调用 Web 服务
【发布时间】:2017-11-08 20:41:01
【问题描述】:

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

谁能帮我用正确的方法来执行这个?

【问题讨论】:

  • 您是否在问如何使用 curl 提供凭据?它有据可查。 curl.haxx.se/docs/manpage.html#--basic
  • 你有你正在尝试的方式的例子吗?
  • 这是我正在尝试的命令: curl -header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction:urn:login" --basic -u username :password --data @test.xml url
  • @Eddie 我关心的是如何从通过 telnet 连接暴露的 unix 调用 web 服务
  • 我尝试连接到外部网络服务。我能够连接到服务器,但我没有从外部服务器得到任何响应。我在下面的某个地方找到了命令,我们可以在建立连接后尝试检查服务器是否响应: telnet server port Trying Server... Connected to server。转义字符是 '^]'。 POST / 但是我在发送此命令时没有收到服务器的任何响应。如果这是测试服务器是否响应的正确方法,您是否有任何线索?

标签: curl telnet webservice-client


【解决方案1】:

如果您不需要 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.

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

curl telnet://remotehost

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

    curl telnet://remote.server.com

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

    curl -tTTYPE=vt100 telnet://remote.server.com

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

  • XDISPLOC= 设置 X 显示位置。

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

【讨论】:

  • 用于测试mysql(3306)和redis(6379)!!
猜你喜欢
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 2023-04-08
  • 2018-11-13
  • 1970-01-01
  • 2021-06-21
  • 2019-05-16
  • 2020-07-31
相关资源
最近更新 更多