У меня есть следующий сценарий:
- У меня есть сервер ShoutCast-ish, который выдает информацию о радиостанции в формате XML.
- У меня есть клиент Flash Player, который должен получить его.
- При использовании GET Flash Player не может получать данные через HTTP-Basic auth.
- Итак, я создаю сценарий Python CGI для обработки аутентификации и повторного предоставления информации.
Надеюсь, что это имеет смысл.По сути, мой сценарий служит прокси для реальных данных, создавая HTTP-запрос, извлекая данные и передавая их по запросу.
Вот мой Python
#!/usr/bin/python
import base64, cgitb, sys, urllib2
cgitb.enable()
print "Content-Type: text/xml"
print
username = "username"
password = "password"
url = "http://s6.voscast.com:7158/admin.cgi?mode=viewxml"
auth = base64.encodestring('%s:%s' % (username, password))[:-1]
request = urllib2.Request(url)
request.add_header("Authorization", "Basic %s" % auth)
try:
handle = urllib2.urlopen(request)
except IOError, e:
print "Something Failed."
sys.exit(1)
print handle.read()
Довольно просто,право?К сожалению, это не работает.Если я захожу на сайт в браузере и ввожу то же имя пользователя и пароль, это работает;Я вижу дерево XML.
Вместо этого я получаю следующий вывод в stdout
:
Content-Type: text/xml
ICY 404 Resource Not Found
icy-notice1:<BR>SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>
icy-notice2:The resource requested was not found<BR>
Что я делаю не так?Учитывая тот же URL, имя пользователя и пароль в браузере, все работает.Что я пропустил?