私は次のシナリオを持っています:
- ラジオ局のXML情報を提供するShoutCast-ishサーバを持っています。
- Flash Playerクライアントを取得する必要があります。
- GETを使用している場合、Flash PlayerはHTTP-Basic認証では取得できません。
- そこで、認証を処理して情報を再提供する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:
SHOUTcast Distributed Network Audio Server/Linux v1.9.8
icy-notice2:The resource requested was not found
私は間違って何をしていますか?ブラウザで同じURL、ユーザー名、およびパスワードを指定すると、すべてが機能します。私は何を逃したのですか?