c# - WebRequest 与 FileWebRequest

标签 c# webrequest

我正在阅读 Microsoft 考试 70-483“C# 编程”的示例试题。

有一个问题的答案我不明白,也无法在 Internet 上找到有关该主题的任何信息。

问题是:

You are implementing a method named ProcessFile that retrieves data files from web servers and FTP servers. The ProcessFile() method has the following method signature:
Public void ProcessFile(Guid dataField, string dataFileUri)
Each time the ProcessFile() method is called, it must retrieve a unique data file and then save the data file to disk.
You need to complete the implementation of the ProcessFile() method. Which code segment should you use?

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”不是。
请记住我做的问题在过去有很多错误,所以也许这也不正确?

最佳答案

几个小时前我也遇到了这个问题。早期我没有使用过这个,但是通过在 Google 中搜索信息,我得出以下结论:

  • 问题的主要词是来自网络服务器和FTP服务器

    这意味着 dataFileUri 可能类似于 http://mywebserverftp://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 时,传输协议(protocol)会自动检测请求的类型

    所以你不需要考虑文件是否存储在web服务器/文件服务器/ftp服务器上

关于c# - WebRequest 与 FileWebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50773925/

相关文章:

c# - FirstOrDefaultAsync() & SingleOrDefaultAsync() 与 FindAsync() EFCore

c# - 包含异常的 DataContract

c# - <asp :CheckBoxList>? 上的滚动条

c# - 从 C# 应用程序测试网站是否存在

c# - 我可以使用 .NET Framework 从指定的 ip 地址发送 webrequest 吗?

c# - 返回任务的结果 - 包括异常?

c# - 任何人都可以向我解释 CreatedAtRoute() 吗?

c# - UnityWebRequest 返回 "\u001f�\b"

c# - 使用 .Net WebRequest 工厂

ssl - WebRequest SSL 证书验证