WebRequest 与 FileWebRequest
WebRequest vs FileWebRequest
我正在查看 Microsoft 考试 70-483 "Programming in C#" 的示例试题。
有一个问题我不明白,也没有在网上找到任何关于该主题的答案。
问题是:
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://mywebserver or 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 时,传输协议会自动检测请求的类型
所以你不需要考虑文件是否存储在网络server/fileserver/ftp服务器
我正在查看 Microsoft 考试 70-483 "Programming in C#" 的示例试题。
有一个问题我不明白,也没有在网上找到任何关于该主题的答案。
问题是:
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://mywebserver or 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 时,传输协议会自动检测请求的类型
所以你不需要考虑文件是否存储在网络server/fileserver/ftp服务器