公司发布文件并定期更新。
例如。http://somecompany.com/blah/file.zip
我想每天投票一次,看看它是否已经更新。
我猜我可以查看 http 标头以获取文件大小,或者可能是表明它已更改的日期/校验和。
我想知道除了创建直接 TCP 连接和发送一些命令之外,在 C# 中是否有一个优雅的解决方案。
有任何想法吗?
公司发布文件并定期更新。
例如。http://somecompany.com/blah/file.zip
我想每天投票一次,看看它是否已经更新。
我猜我可以查看 http 标头以获取文件大小,或者可能是表明它已更改的日期/校验和。
我想知道除了创建直接 TCP 连接和发送一些命令之外,在 C# 中是否有一个优雅的解决方案。
有任何想法吗?
由于文件位于远程 Web 服务器上,您可以使用Last-Modified
标头字段来识别文件是否有任何更改。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://somecompany.com/blah/file.zip");
request.Method = "HEAD"; // Important - Not interested in file contents
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
Console.WriteLine(resp.LastModified);
确保您使用HEAD
的是请求方法;就像GET
下载文件一样。
在 PCL 中,您无权访问完整 .Net 中的相同对象。所以这里有一段更灵活的代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://somecompany.com/blah/file.zip");
request.Method = "HEAD"; // Important - Not interested in file contents
string lastModified = null;
ManualResetEvent mre = new ManualResetEvent(false);
var req = request.BeginGetResponse((result) =>
{
var resp = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
lastModified = resp.Headers["Last-Modified"];
mre.Set();
}, request);
mre.WaitOne();