以下代码:
import urllib2
file = urllib2.urlopen("http://foo.bar.com:82")
在我的mac上运行得很好(运行Python 2.7.1的OS X 10.8.4。它打开了URL,我可以毫无问题地解析文件。
当我在GoDaddy Python 2.7.3(或2.4)中尝试使用完全相同的代码(这两行)时收到错误:
urllib2.URLError: <urlopen error (111, 'Connection refused')
问题与端口有关:82是地址的重要组成部分。我尝试过使用带掩码等的转发地址,但没有任何作用。
知道为什么它可以在一个环境中工作而不在另一个(表面上相似)的环境中工作吗?任何想法如何解决这个问题?我也试过Mechanize无济于事。以前的帖子建议关注urllib2.HTTPBasicAuthHandler,但它在我的OS X环境中运行正常,没有任何特殊之处。
欢迎提出意见。
答案 0 :(得分:0)
Connection refused
表示您的操作系统尝试联系远程主机,但是有一个关闭的端口&#34;消息。
很有可能,这是因为GoDaddy与foo.bar.com
之间存在防火墙。最有可能的是,foo.bar.com
只能从您的计算机或本地网络访问,但也可能是GoDaddy阻止访问奇怪的端口。
答案 1 :(得分:0)
通过快速浏览GoDaddy支持论坛,看起来它们只支持对共享主机上的端口80(HTTP)和443(HTTPS)的传出请求。参见例如
http://support.godaddy.com/groups/web-hosting/forum/topic/curl-to-ports-other-than-80/