我正在使用以下代码片段来调用需要基本身份验证的 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 中使用亚马逊版本的 linux,该版本已被完全锁定。