C# Скачать файл из HTTP File Directory, получая ошибку 401 или ошибку 403

Я пытаюсь загрузить несколько файлов с локального сетевого устройства: каталог файлов http

Я хочу написать код, который автоматически загрузит все эти файлы.avi на мой компьютер.

У меня 2 проблемы:

Проблема 1: АУТЕНТИФИКАЦИЯ с использованием только класса WebClient. Если я использую класс WebClient только для подключения, я получаю 401 несанкционированную ошибку.

Код:

try
{
    using (WebClient myWebClient = new WebClient())
    { 
                    myWebClient.UseDefaultCredentials = false;
                    myWebClient.Credentials = new NetworkCredential("user", "pword");
                    String userName = "user";
                    String passWord = "pword";
                    string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(userName + ":" + passWord));
                    myWebClient.Headers[HttpRequestHeader.Authorization] = "Basic " + credentials;
                    Console.WriteLine("Header AUTHORIZATION: "+ myWebClient.Headers[HttpRequestHeader.Authorization].ToString());

                // Download the Web resource and save it into the current filesystem folder.
                Console.WriteLine("Start DL");
                myWebClient.DownloadFile("http://192.168.2.72:81/sd/20170121/record000/P170121_000000_001006.avi", "P170121_000000_001006.avi");
                Console.WriteLine("End DL");
      }
}
catch(Exception ex)
{
                Console.WriteLine("DOWNLOAD ERROR: " + ex.ToString());
 }

Сообщение об ошибке: Ошибка аутентификации 401 Несанкционированная ошибка

Проблема 2: Была возможность аутентификации с использованием класса WebProxy, но не удалось загрузить. Получение 403 Не найдена ошибка.

Код:

try
{
    using (WebClient myWebClient = new WebClient())
    {
            WebProxy wp = new WebProxy("http://192.168.2.72:81/sd/20170121/record000/",false);                   
            wp.Credentials = new NetworkCredential("user","pword");
            Console.WriteLine("Web Proxy: " + wp.Address);
            myWebClient.UseDefaultCredentials = false;
            myWebClient.Credentials = wp.Credentials;
            myWebClient.Proxy = wp;
            Console.WriteLine("Downloading File \"{0}\" from \"{1}\"\n\n", filename, wp.Address);

            // Download the Web resource and save it into the current filesystem folder.
            Console.WriteLine("Start DL");
            myWebClient.DownloadFile("http://192.168.2.72:81/sd/20170121/record000/P170121_000000_001006.avi", "P170121_000000_001006.avi");
            Console.WriteLine("End DL");
        }
     }
     catch(Exception ex)
     {
         Console.WriteLine("DOWNLOAD ERROR: " + ex.ToString());
     }

Сообщение об ошибке: 403 не найден

ОШИБКА ЗАГРУЗКИ: System.Net.WebException: удаленный сервер возвратил ошибку: (404) Not Found. в System.Net.WebClient.DownloadFile(адрес Uri, строковое имя файла) в System.Net.WebClient.DownloadFile(строковый адрес, строковое имя файла) в ConsoleApplication2.Program.Main (String [] args) в C:\Users\Gordon\ документы \visual studio 2015\ Проекты \ConsoleApplication2\ConsoleApplication2\Program.cs: строка 139

Пожалуйста, помогите мне определить, есть ли какие-либо ошибки в моем коде или есть лучший способ представить учетные данные и загрузить все файлы.

Заранее спасибо!

1 ответ

Я не разработчик Dot Net, я просто делюсь своим мнением. Во втором пункте вы упомянули, что вы получаете 403, который является кодом статуса Http для отказано в доступе. Я считаю, что ваши учетные данные недействительны или у вас нет прав для выполнения операции.

Другие вопросы по тегам