2017-01-22 15 views
1

Я пытаюсь загрузить несколько файлов из локальной сети устройства: http file directoryC# Загрузка файла из каталога HTTP File получать 401 ошибку или 403 ошибки

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

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

Problem 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 Unauthorized Error

Задача 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) не найден. в System.Net.WebClient.DownloadFile (адрес Uri, String fileName) в System.Net.WebClient.DownloadFile (String address, String fileName) at ConsoleApplication2.Program.Main (String [] args) в C: \ Users \ Gordon \ documents \ visual studio 2015 \ Projects \ ConsoleApplication2 \ ConsoleApplication2 \ Program.cs: строка 139

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

Заранее благодарен!

ответ

0

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

+0

Спасибо, Сафдар! Имя пользователя и пароль, которые я вводил, работали для меня, когда я обращаюсь к сайту через веб-браузер. Возможно, уточнить мой вопрос, учитывая, что у меня есть правильные учетные данные, и я могу зайти на сайт и загрузить файлы через веб-браузер, я хотел бы иметь возможность написать код, который может передавать учетные данные на сайт и автоматизировать скачать для меня. – gman