私は、次のシナリオがあります:私はラジオ局のXML情報を提供Shoutcastはっぽいサーバーを持っているHTTP-Basic認証で404ですか?
- を。
- 私はそれをフェッチする必要がある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、ユーザー名、およびパスワードを指定すると、すべてが機能します。私は何を逃したのですか?
これはまさにそれです。私は 'User-Agent'を追加しました。ありがとう! –
そういうことは問題ではありません...しかし、あなたはそれがどれほど頻繁に起こるのか驚くでしょう。 –