通过c#间接url下载



我有一个生成excel文件的间接链接。我搜索了很多,发现一些方法并没有达到我需要的效果。链接地址不直接指向excel文件,原因是每当请求URL时,网页就会生成一个新的excel文件__刷新内容。我使用了下面提到的不同方法。我到底想做的是,没有打开浏览器,我想下载URL的内容(这是一个excel文件),并将其保存为excel文件。这里是链接,如果你点击它,你会直接得到一个excel文件,但URL本身不包含excel文件的扩展名。
我使用了以下方法:

client.DownloadFile(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0", @"D:a.xlsx");

上面的方法保存了内容,但不幸的是它不能被excel显示,我不知道原因。

WebRequest request = HttpWebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
using (WebResponse response = request.GetResponse())
{
    Stream responseStream = response.GetResponseStream();
    StreamReader r = new StreamReader(responseStream);
    //third party methods
}

上面的代码也是通过搜索使用的,但它没有提供我需要的,我使用了一些第三方dlls将流保存为excel文件,再次保存的文件无法通过excel打开。我还使用了Process。启动却打开了浏览器。我不想打开任何浏览器

压缩流。你应该解压缩它

WebRequest request = HttpWebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
using (WebResponse response = request.GetResponse())
{
    Stream responseStream = response.GetResponseStream();
    using(var fs = File.Create("MarketWatchPlus-1394.4.24.xlsx"))
    {
        var zipStream = new System.IO.Compression.GZipStream(responseStream,  System.IO.Compression.CompressionMode.Decompress,true);
        zipStream.CopyTo(fs);
    }
}

感谢EZI给出的好答案。我只是把这个作为另一种选择。HttpWebRequest确实有自动解压的功能。

HttpWebRequest request = WebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0") as HttpWebRequest;
request.AutomaticDecompression = DecompressionMethods.GZip;
using (WebResponse response = request.GetResponse())
{
    using (Stream fs = File.Create("excelFile.xlsx"))
    {
        response.GetResponseStream().CopyTo(fs);
    }
}

相关内容

  • 没有找到相关文章

最新更新