CEFSharp - 阅读网络回复
CEFSharp - Read web responses
我正在开发一个项目,我想使用 Chromium Web 浏览器并能够读取通常通过 DevTools "Network" 选项卡获取的数据。所以基本上我真正需要的是 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);
}
这是我最后做的...
实现了一个名为 "RequestHandler" 的 class,它实现了 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;
希望对大家有所帮助!
我正在开发一个项目,我想使用 Chromium Web 浏览器并能够读取通常通过 DevTools "Network" 选项卡获取的数据。所以基本上我真正需要的是 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);
}
这是我最后做的...
实现了一个名为 "RequestHandler" 的 class,它实现了 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;
希望对大家有所帮助!