Python中的HTTPConnection请求socket.gaierror
今天我在尝试通过发送一个 '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对象嘛 :)