【发布时间】:2014-07-16 12:50:06
【问题描述】:
我有一个奇怪的问题,我需要在我的 WPF 应用程序中下载一个文件格式this URL。文件内容为压缩后的excel文件。我使用下面的代码下载文件,但代码卡在一行中:await client.getAsync(URL),我不知道为什么!相同的代码在另一个系统中执行良好。你能帮我怎么做才能得到很好的回答吗?
static void Main()
{
var task = DownloadFileAsync("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
task.Wait();
}
static async Task DownloadFileAsync(string url)
{
HttpClient client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip });
HttpResponseMessage response = await client.GetAsync(url);
// Get the file name from the content-disposition header.
// This is nasty because of bug in .net: http://stackoverflow.com/questions/21008499/httpresponsemessage-content-headers- contentdisposition-is-null
string fileName = response.Content.Headers.GetValues("Content-Disposition")
.Select(h => Regex.Match(h, @"(?<=filename=).+$").Value)
.FirstOrDefault()
.Replace('/', '_');
using (FileStream file = File.Create(fileName))
{
await response.Content.CopyToAsync(file);
}
}
如果有其他方法可以下载此文件并获取文件名或更正此代码的方法,我将非常感激。
【问题讨论】:
标签: c# wpf download httpclient