Я пытаюсь использовать HTTP-интерфейс VLC для чтения текущего списка воспроизведения (GET /requests/playlist.xml
).Проверка подлинности VLC с использованием HttpWebRequest
Это работало отлично в старой версии 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, что он не использует имя пользователя; или это ошибка в моем коде, что мне нужно было установить что-то еще?