我試圖使用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中的一個錯誤,它不使用用戶名;或者它是我的代碼中的一個錯誤,我需要設置其他東西?