2014-02-06 41 views
0

我試圖使用VLC的HTTP接口來讀取當前播放列表(GET /requests/playlist.xml)。使用HttpWebRequest的VLC驗證

這在舊版本的VLC中工作正常,但在最近的版本中他們添加了一個密碼選項,然後使其成爲強制性的。 (沒有用戶名)

我第一次使用這個嘗試:

request.Credentials = new NetworkCredential("", password); 
request.PreAuthenticate = true; 

然而這導致引發WebException報告一個401錯誤。偵聽流量顯示它發送了一個沒有授權標頭的請求,然後立即報告錯誤而未嘗試實際進行身份驗證。 (VLC沒有正確迴應WWW-Authenticate挑戰。)

如果我指定一個非空白的用戶名,那麼它將發送與之前相同的請求,但隨後會跟進指定授權標頭的第二個請求 - 然後由於VLC拒絕用戶名而失敗。

我終於設法得到它通過明確設置標題的工作:

var credential = Convert.ToBase64String(Encoding.Default.GetBytes(":" + password)); 
request.Headers[HttpRequestHeader.Authorization] = "Basic " + credential; 

這似乎喜歡的事,應該有,最初的工作,雖然。這是.NET(或WinInet)中的一個錯誤,它無法應付空白的用戶名;或者它是VLC中的一個錯誤,它不使用用戶名;或者它是我的代碼中的一個錯誤,我需要設置其他東西?

回答

0

我有同樣的問題,儘管我使用空字符串作爲密碼。有些工具可用於反編譯您正在使用的.NET庫,因此您可以查看其源代碼。雖然我還沒有找到任何東西,也許你可以用它來確定它是否是一個.NET問題。我有這個問題發生使用基本和摘要授權,所以我會看看HttpWebRequest(我假設你正在使用)。

似乎手動設置授權標題是現在的方式。由於您使用的是基本版,如果您關心密碼的安全性,如果您尚未實施,則可能需要查看SSL。