WebRequest vs FileWebRequest - PullRequest
       16

WebRequest vs FileWebRequest

0 голосов
/ 09 июня 2018

Я рассматриваю пример экзаменационных вопросов к экзамену Microsoft 70-483 «Программирование на C #».

Есть один вопрос, ответ на который я не понимаю и не смог найти ничего отема в Интернете.

Вопрос:

Вы реализуете метод с именем ProcessFile, который извлекает файлы данных с веб-серверов и FTP-серверов.Метод ProcessFile () имеет следующую сигнатуру метода:Открытый void ProcessFile (Guid dataField, строка dataFileUri)Каждый раз, когда вызывается метод ProcessFile (), он должен извлечь уникальный файл данных и затем сохранить файл данных на диск.Вам необходимо завершить реализацию метода ProcessFile ().Какой сегмент кода вы должны использовать?

FileWebRequest request = FileWebRequest.Create(dataFileUri) as FileWebRequest;
using (FileWebResponse response = request.GetResponse() as FileWebResponse)
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
using (StreamWriter writer = new StreamWriter(dataFieldId + ".dat"))
{
    writer.Write(reader.ReadToEnd());
}

-или-

WebRequest request = WebRequest.Create(dataFileUri);
using (WebResponse response = request.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
using (StreamWriter writer = new StreamWriter(dataFieldId + ".dat"))
{
    writer.Write(reader.ReadToEnd());
}

По мнению лиц, задающих вопросы, последний фрагмент, использующий "WebRequest", является правильнымодин.Но я не могу понять, почему «FileWebRequest» не так.Имейте в виду, что вопросы, которые я задаю, много раз были неправильными в прошлом, так что, может быть, это тоже неправильно?

1 Ответ

0 голосов
/ 12 марта 2019

Несколько часов назад я тоже встречал этот вопрос.Раньше я не работал с этим, но при поиске информации в Google я сделал следующие выводы:

  • основные слова, о которых идет речь, с веб-серверов и FTP-серверов ,

    , это означает, что dataFileUri может быть как http://mywebserver или ftp: // myftpserver

  • , когда выпопробуйте получить файл с ftp-сервера, например:

    //from answer
    var request1 = WebRequest.Create("ftp://myftpserver");   
    
    //from answer
    var request2 = FileWebRequest.Create("ftp://myftpserver") as FileWebRequest;   
    
    var request3 = WebRequest.Create("ftp://myftpserver") as FtpWebRequest;
    

    request1, request3 будет иметь значение запроса с типом SystemNet.FtpWebRequest.request2 будет null .

    Аналогичное поведение будет при попытке использовать http://mywebserver: request2, request3 будет null .

  • при использовании WebRequest тип запроса будет автоматически определяться протоколом передачи

    Поэтому вам не нужно думать о том, хранится ли файл на веб-сервере / файловом сервере / ftpсервер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...