Python中的HTTPConnection请求socket.gaierror

1 投票
2 回答
11965 浏览
提问于 2025-04-17 11:08

今天我在尝试通过发送一个 'GET' HTTP 请求来获取一个 XML 文件时遇到了一个错误。

from httplib import HTTPConnection
import urllib

params = urllib.urlencode({'sK': 'test', 'sXML': 1})
httpCon = HTTPConnection("http://www.podnapisi.net",80)
httpCon.request('GET', '/en/ppodnapisi/search',params)
r1 = httpCon.getresponse()

这是我收到的错误信息:

.....
File "C:\Python27\lib\socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 11004] getaddrinfo failed

我想要获取的 XML 文件可以在 这里 找到。

我该怎么解决这个错误呢?

提前谢谢大家 ...

2 个回答

3

你不小心在domain参数中加上了协议前缀,应该是这样的:

httpCon = HTTPConnection("www.podnapisi.net", 80)

一般来说,这个错误表示在把域名转换成IP地址时出现了问题。这个问题可能只是偶尔发生。如果问题一直存在,建议检查一下你系统的DNS设置。

比如,你可以设置成使用谷歌的公共DNS服务器。关于如何在微软Windows上配置你的DNS服务器,可以参考微软的知识库

8

在HTTPConnection构造函数中没有指定协议(http://):

httpCon = HTTPConnection("www.podnapisi.net",80)

它已经知道是HTTP了,因为它就是一个HTTPConnection对象嘛 :)

撰写回答