当我从我的 ubuntu 机器上使用 cURL 从远程机器获取 GET 信息时,我似乎无法解析主机名,而只是出现代理问题 -The proxy has encountered an error (Error 21: Server Hostname Not Found)
运行时:
curl remotehostname
但是,我可以 ping 通它的两个remotehostname
地址和它的 ip 地址,而且curl
只使用 ip 地址就可以正常工作,例如curl 1.2.3.4
。
ApacheHttpClient
我甚至尝试了一个使用Jersey 实现的Java 程序Client
,并且它也运行良好。
当其他一切似乎都可以解释时,cURL 无法解释,这有什么特殊原因吗remotehostname
?我想这是一个与代理相关的问题,但据我所知,我的代理设置得很好,因为其他一切似乎都可以工作,只是 cURL 不行。
答案1
尝试使用跟随重定向选项。curl -L remotehostname
(“L”大写)。要检查这是否是代理的问题,而不仅仅是您下载的 URL 的问题,请测试不同的 URL 以查看是否出现相同的错误。
答案2
我想有点太晚了,但我遇到过类似的问题,而且这对我有用:
curl -4 remotehostname
此选项告诉 curl 仅将名称解析为 IPv4 地址。
使用 wireshark 监控数据包,我发现 curl 正在尝试将主机名解析为 IPV6 地址,但这是不可能的。
希望它也对你有用,祝你好运。