C# 使用webclient从网上银行网站下载银行对账单文件

C# 使用webclient从网上银行网站下载银行对账单文件,c#,web-scraping,C#,Web Scraping,我一直在尝试使用webclient下载OFX格式的银行对账单,如下所示: using System; using System.IO; using System.Net; using System.Text; using System.Data; using System.Collections.Specialized; namespace DownloadBankStatement { class Program { static void Main(stri

我一直在尝试使用webclient下载OFX格式的银行对账单,如下所示:

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Data;
using System.Collections.Specialized;

namespace DownloadBankStatement
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var client = new system.net.CookieAwareWebClient())
            {
                var LoginValues = new NameValueCollection
                {
                    {"newCardNumber","XXXXXXXXXXXXXXXXXXX"},
                    {"pswPassword","XXXX"}
                };
                client.UploadValues("https://www.cibconline.cibc.com/olbtxn/authentication/SignOn.cibc", "POST", LoginValues
                var PostValues = new NameValueCollection
                {
                    {"selectedAccount","XXXXX,XXXXXXX"},
                    {"selectedCriteria","2"},
                    {"fromDateMonth","2"},
                    {"fromDateDay","7"},
                    {"fromDateYear","2017"},
                    {"toDateMonth","2"},
                    {"toDateDay","7"},
                    {"toDateYear","2017"},
                    {"selectedFMSPackage","3"}
                };
                byte[] Statement = client.UploadValues("https://www.cibconline.cibc.com/olbtxn/accounts/TransactionDownload2.cibc", "POST", PostValues);
                File.WriteAllBytes("C:\\Statement.aso", Statement);
            }
            Console.ReadLine();          
        }        
    }
}

namespace system.net
{
    public class CookieAwareWebClient : WebClient
    {
        public CookieContainer CookieContainer { get; private set; }

        public CookieAwareWebClient()
        {
            this.CookieContainer = new CookieContainer();
        }

        public CookieAwareWebClient(CookieContainer cookieContainer)
        {
            this.CookieContainer = cookieContainer;
        }

        protected override WebRequest GetWebRequest(Uri address)
        {
            var request = base.GetWebRequest(address) as HttpWebRequest;
            if (request == null) return base.GetWebRequest(address);
            request.CookieContainer = CookieContainer;
            return request;
        }
    }
}
除了我得到的响应外,其他一切都正常工作。我得到的响应是包含第二个表单的网页,我在其中设置了银行对账单参数

我查看了帖子的详细信息,其中显示:

内容处置:附件;filename=cibc.aso 内容长度:20052 内容类型:application/vnd.accpac.simply.aso

当我使用IE手动发布表单时,总会有一个弹出窗口要求我保存或直接打开表单,但当我使用Chrome进行同样操作时,不会提出任何问题,文件会直接下载


那么,保存cibc.aso文件的正确方法是什么呢?非常感谢您的反馈。

这取决于浏览器设置。在chrome设置中,在下载下;有一个复选框“下载前询问每个文件的保存位置”