2017-02-09 5 views
0

Я пытался загрузить банковскую выписку в формате OFX с помощью WebClient, как это:Скачать банк заявление файл с сайта онлайн-банкинга с WebClient

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; 
     } 
    } 
} 

Все отлично работает, кроме ответа я получаю это веб-страница, которая содержит вторую форму, в которой я устанавливаю параметры банковской выписки.

Я исследовал детали POST, который показывает:

Content-Disposition: вложение; имя файла = cibc.aso Content-Length: 20052 Content-Type: применение/vnd.accpac.simply.aso

Когда я POST форму вручную с помощью IE всегда есть всплывающее окно с запросом, чтобы я либо сохранить его или открытие это dorectly, но когда я использую Chrome, чтобы сделать то же самое, вопрос не задан, и файл загружается напрямую.

Так что было бы правильным способом сохранить файл cibc.aso, который, очевидно, является приложением здесь? Ваш отзыв очень важен.

ответ

0

Это зависит от настроек браузера. В хромовых настройках, под загрузкой; есть флажок to tic «Спросить, где сохранить каждый файл перед загрузкой».