Linux上的python httplib2问题

时间:2011-07-06 05:25:07

标签: python linux httplib2

我正在使用以下代码段来调用Web服务,这需要基本的身份验证:

import urllib
import httplib2
url='http://heywatch.com/download.json'
body={'username':'my_username','password':'my_password'}
header_data={'Accept': 'application/json'}
http=httplib2.Http()
response, content = http.request(url, 'POST', headers=header_data,     body=urllib.urlencode(body))

我在两个不同的环境中运行相同的代码段:

Mac OSX 10.6.6,python版本2.6.1 - 我得到了正确的回复

Linux - centos,python版本2.6.6 - 我得到以下异常:

.....
File "/usr/lib/python2.6/site-packages/httplib2/__init__.py", line 1129, in _conn_request
    raise ServerNotFoundError("Unable to find the server at %s" % conn.host)
ServerNotFoundError: Unable to find the server at heywatch.com

我在不同的python版本的多个Linux风格上运行此代码,一切正常。我还注意到curl在特定的机器上无法正常工作。以下curl命令(模仿上面的代码)在我的Mac OSX上运行正常:

curl -u username:password -X POST -d "url=https://s3.amazonaws.com/my_video_to_be_encoded.mov" -d "title=new_video" -d "automatic_encode=true" -d "ping_url_after_encode=http://mydomain/video_encode_success" https://heywatch.com/download.json

但在受影响的Linux工作站上失败,并显示以下消息:

curl: (6) Couldn't resolve host 'heywatch.com'

知道为什么会这样吗?似乎某些操作系统设置不正确。如果它有帮助,我在亚马逊ec2中使用了amazon version of linux,它被锁定了。

1 个答案:

答案 0 :(得分:0)

这与linux盒子如何解析heywatch.com有关。你做ping,看看heywatch.com是否可以访问(可能不是)。您可能需要查看Linux机器上的/etc/resolv.conf以查看配置了哪些名称服务器,并询问亚马逊是否使用了他们的任何名称服务器。

FWIW,我只是试图在我的ubuntu in linode上解决heywatch,它似乎解决得很好。