【问题标题】:following url: curl couldn't resolve host 'GET'以下网址:curl 无法解析主机 'GET'
【发布时间】:2014-08-04 23:26:22
【问题描述】:

我有一个页面(使用 php 框架实现)以这种方式在 MySQL 数据库中添加记录: www.mysite.ext/controller/addRecord.php?id=number 在表中添加一行,其中包含通过 post 传递的数字 id 和其他信息,例如时间戳等。 因此,我将我的整个网络应用程序转移到另一个域,并且所有 HTTP 请求从旧域到新域都可以正常工作。 唯一剩下的问题是 curl:我编写了一个运行此链接 curl 的 bash 脚本(在 linux 下)。现在,显然它不起作用,因为 curl 返回一条警报消息,其中我读到的页面已移动。 好的,我就是这样编辑curl sintax的

#! /bin/sh
link="www.myoldsite.ext/controlloer/addRecord.php?id=number"
curl --request -L GET $link

我添加 -L 以在新位置跟随 url,但 curl 返回我在此主题标题中写的错误。 如果我可以直接修改添加新域的链接,但我没有对所有设备的物理访问权限,那会更容易。

【问题讨论】:

  • "curl 无法解析主机 'GET'" 说明了一切。 -L 不期望 GET 作为参数。因此 curl 尝试获取 URL GET,或者从名为 GET 的主机读取。它没有解决,如果您真的打算联系主机 GET,您应该将该主机名添加到您的主机文件中,并使用它应该具有的 IP 地址。如果您打算强制使用 GET 而不是 PUT 请求来交换数据,请查看选项 -G
  • GET 无论如何都应该是默认值,没有理由设置它。
  • 有没有办法解决这个问题,而无需物理访问我必须应用此“补丁”的所有设备?我认为编辑 curl 没有意义,因为我无法访问这台机器。我可以通过网络执行此操作吗?
  • 不,你不能。您传递给curl 的参数无效。这与您的网络服务器无关,因此您对网络服务器所做的任何事情都无法改变它。

标签: php mysql bash curl


【解决方案1】:

GET is the default request 键入 curl。这不是设置它的方式。

curl -X GET ...

这就是将GET 设置为curl 使用的方法关键字 的方式。

需要注意的是,curl 会根据请求的操作自行选择要使用的方法。 -d 会做 POST,-I 会做 HEAD 等等。如果您使用 --request / -X 选项,您可以更改 curl 选择的方法关键字,但不会修改 curl 的行为。这意味着,例如,如果您使用 -d "data" 进行 POST,则可以使用 -X 将方法修改为 PROPFIND,curl 仍会认为它发送 POST。您可以通过简单地在命令行中添加 -X POST 来将普通的 GET 更改为 POST 方法,例如:

curl -X POST http://example.org/

...但是 curl 仍然会像发送 GET 一样思考和行动,因此它不会发送任何请求正文等。

更多:http://curl.haxx.se/docs/httpscripting.html#More_on_changed_methods

同样,这不是必需的。您确定链接正确吗?

【讨论】:

  • 好的,但是这样我必须能够物理访问计算机,在这种情况下我可以更改 url!
猜你喜欢
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 2010-11-23
  • 2011-05-20
  • 2021-12-18
  • 1970-01-01
相关资源
最近更新 更多