Я использую следующий фрагмент кода для вызова веб-службы, для которой требуется базовая аутентификация:
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
Я запустил этот код на нескольких версиях Linux с разными версиями Python, и все работает отлично. Я также заметил, что 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'
Есть идеи, почему это происходит? Кажется, что некоторые настройки ОС неверны. Если это поможет, я использую версию linux amazon в amazon ec2, которая довольно заблокирована.