2011-10-27 16 views
1

私は、次のシナリオがあります:私はラジオ局のXML情報を提供Shoutcastはっぽいサーバーを持っているHTTP-Basic認証で404ですか?

  1. を。
  2. 私はそれをフェッチする必要があるFlash Playerクライアントを持っています。
  3. GETを使用すると、Flash PlayerはHTTP-Basic authで物をフェッチできません。
  4. 私は認証を処理し、情報を再提供する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、ユーザー名、およびパスワードを指定すると、すべてが機能します。私は何を逃したのですか?

答えて

2

また、User-AgentまたはAcceptsヘッダーが必要な場合があります。

FirebugまたはLiveHTTPヘッダーを使用してブラウザから送信されたhttpヘッダーのいくつかをFirefoxまたはChrome開発ツールで比較/コピーしてみてください。 16進数のパスワードを比較して、正しいことを確認してください。次に、問題を発見するまで、一度に1つずつ他のヘッダーを追加します。

+1

これはまさにそれです。私は 'User-Agent'を追加しました。ありがとう! –

+0

そういうことは問題ではありません...しかし、あなたはそれがどれほど頻繁に起こるのか驚くでしょう。 –

関連する問題