CEFSharp - 阅读网络回复

Bin*_*xus 2 c# chromium-embedded cefsharp

我正在处理一个项目,我想使用 Chromium Web 浏览器并能够读取通常通过 DevTools“网络”选项卡获取的数据。所以基本上我真正需要的是 URL 和状态代码(404、200、50x 等)。

我让 ChromiumWebBrowser 部分的一切正常工作,因为它工作得很好,但我似乎无法弄清楚如何获取网络数据的细节。

我在 github 问题部分找到了这个,但我真的不明白如何实现它。https://github.com/cefsharp/CefSharp/issues/1379

任何帮助将不胜感激。

这是我到目前为止...

private ChromiumWebBrowser _wb;

    public MainForm()
    {
        var cefsettings = new CefSettings { CachePath = "cache" };
        cefsettings.CachePath = "cache";
        if (cefsettings.CefCommandLineArgs.ContainsKey("enable-system-flash"))
        {
            string flashValue;
            cefsettings.CefCommandLineArgs.TryGetValue("enable-system-flash", out flashValue);
            if (flashValue != "1")
            {
                Debug.WriteLine("Flash Might Be Disabled For Chromium Web Browser");
            }
        }
        else
        {
            cefsettings.CefCommandLineArgs.Add("enable-system-flash", "1");
        }
        //TODO: Get the latest version version folder
        cefsettings.CefCommandLineArgs.Add("ppapi-flash-path","C:\\program Files (x86)\\Google\\Chrome\\Application\\51.0.2704.103\\PepperFlash\\pepflashplayer.dll");
        Cef.Initialize(cefsettings);

        InitializeComponent();

        _wb = new ChromiumWebBrowser("http://youtube.com/")
        {
            Dock = DockStyle.Fill,
            Location = new System.Drawing.Point(0, 22),
            MinimumSize = new System.Drawing.Size(20, 20),
            Size = new System.Drawing.Size(1280, 900),
            TabIndex = 8
        };

        //Add ChromiumWebBrowser to the Browser Panel
        pnlBrowser.Controls.Add(_wb);
    }
Run Code Online (Sandbox Code Playgroud)

Bin*_*xus 5

这是我最终做的......

实现了一个名为“RequestHandler”的类,它实现了 IRequestHandler 接口。从 CEFSharp 开源项目中复制了此接口方法的大部分默认代码,然后根据我的喜好调整了“IRequestHandler.OnResourceResponse”部分。

然后在我使用网络浏览器的主窗体上,我只使用了下面的代码......

//Create ChromiumWebBrowser
_wb = new ChromiumWebBrowser(Urls.HOME)
{
    Dock = DockStyle.Fill,
    Location = new System.Drawing.Point(0, 22),
    MinimumSize = new System.Drawing.Size(20, 20),
    Size = new System.Drawing.Size(1280, 900),
    TabIndex = 8
};

//Add ChromiumWebBrowser to the Browser Panel and add events
pnlBrowser.Controls.Add(_wb);
var requestHandler = new RequestHandler();
_wb.RequestHandler = requestHandler;
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助别人!