8.CefSharpを使って、CacheとCookieの保存をしてみる。

1.これまでの以下1、2、3をおさらいして、新しくプロジェクトを作成します。

  1. WinFormsアプリを作成して、NuGetパッケージを使ってCefSharpを追加する。
  2. プラットフォーム構成を変更して、AnyCPUで使用できるようにする。
  3. CefSharpを使って、通常のブラウザを表示する。

2.フォーム(Form1.cs)を変更します。

下図の例では、カレントディレクトリに「cache」フォルダと「cookies」フォルダが作成され、それぞれのデータが保存されます。

3.ここまで出来たら、実行してみます。

  1. クッキーテスターのサイトが表示されます。
  2. 左下の「Set Test Cookie」をクリックして、クッキーを保存すると、上に保存したクッキーが表示されます。
  3. 一度、プログラムを終了し、再度実行すると、同じ画面となり、クッキーが保存され復元されたことがわかります。

カレントディレクトリには、「cache」フォルダと「cookies」フォルダが作成されています。

「cache」フォルダの中は、こんな感じ

「cookies」フォルダの中は、こんな感じ

 

【フォーム(Form1.cs)】

using System;
using System.IO;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

namespace WindowsFormsApp19
{
    public partial class Form1 : Form
    {
        public ChromiumWebBrowser chromeBrowser;

        public Form1()
        {
            InitializeComponent();

            // Start the browser after initialize global component
            InitializeChromium();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            chromeBrowser.ShowDevTools();
        }

        public void InitializeChromium()
        {
            //cacheフォルダを作成する
            Directory.CreateDirectory("cache");

            // Initialize cef with the provided settings
            CefSettings settings = new CefSettings();
            settings.Locale = "ja";
            settings.AcceptLanguageList = "ja-JP";
            settings.CachePath = "cache";
            settings.PersistSessionCookies = true;
            Cef.Initialize(settings);

            //The Global CookieManager has been initialized, you can now set cookies
            var cookieManager = Cef.GetGlobalCookieManager();
            cookieManager.SetStoragePath("cookies", true);


            // Create a browser component
            chromeBrowser = new ChromiumWebBrowser("http://www.html-kit.com/tools/cookietester/");

            // Add it to the form and fill it to the form window.
            this.Controls.Add(chromeBrowser);
            chromeBrowser.Dock = DockStyle.Fill;

            // Allow the use of local resources in the browser
            BrowserSettings browserSettings = new BrowserSettings();
            browserSettings.FileAccessFromFileUrls = CefState.Enabled;
            browserSettings.UniversalAccessFromFileUrls = CefState.Enabled;
            chromeBrowser.BrowserSettings = browserSettings;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Cef.Shutdown();
        }
    }
}