2014-02-06 4 views
0

Я пытаюсь использовать 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, что он не использует имя пользователя; или это ошибка в моем коде, что мне нужно было установить что-то еще?

ответ

0

У меня была такая же проблема, хотя я использую пустую строку для пароля. Существуют такие инструменты, как ILSpy, которые вы можете использовать для декомпиляции библиотек .NET, которые вы используете, чтобы вы могли просматривать их исходный код. Хотя я ничего не нашел, возможно, вы можете использовать это, чтобы определить, является ли это проблемой .NET. У меня возникла эта проблема с использованием как Basic, так и Digest-авторизации, поэтому я бы посмотрел HttpWebRequest (который, как я полагаю, вы используете).

Кажется, что настройка заголовка авторизации вручную - это путь к успеху. Поскольку вы используете Basic, если вам небезразлична безопасность вашего пароля, вы можете захотеть просмотреть SSL, если вы его не используете.

Смежные вопросы