我正在使用CefSharp的WPF控件。我需要知道我发出的请求何时收到http状态代码为404的响应。
我注意到CefSharp有LoadError事件,但只有当域无法完全解析时才会触发(例如,如果我去www.sdfhjkhajsdf.com)。它不适用于域存在的时间,但是您请求的页面不起作用。
答案 0 :(得分:1)
这是一个非常古老的问题。 CefSharp有很多很棒的更新,所以我希望这有助于其他人像我一样搜索。不要恨我,因为我的片段是在VB.NET中。 ;)
我正在做的是记录任何不是200响应的内容。对于我的应用程序,我打开了所请求页面的新表单,因此我通过查看ReferrerUrl
属性将我的注意力集中在初始页面请求上。显然,您可以删除该部分以提醒所有请求。
当您最初实施ChromiumWebBrowser
时,需要为您的实施设置RequestHandler
。
Me.chromeBrowser = New CefSharp.WinForms.ChromiumWebBrowser(uri)
Me.chromeBrowser.RequestHandler = New CefBasicRequestHandler()
Me.Controls.Add(Me.chromeBrowser)
CefSharp发布了一个可以使用的默认实现,只是覆盖OnResourceResponse
。
Imports System.Security.Cryptography.X509Certificates
Imports CefSharp
Public Class CefBasicRequestHandler
Inherits CefSharp.Handler.DefaultRequestHandler
Private Shared ReadOnly Logger As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
Public Overrides Function OnResourceResponse(browserControl As IWebBrowser, browser As IBrowser, frame As IFrame, request As IRequest, response As IResponse) As Boolean
If String.IsNullOrWhiteSpace(request.ReferrerUrl) Then ' this is the first request of the page
Dim method As String = "OnResourceResponse()."
Dim requestOverview As String = $"[{response.StatusCode}] [{request.Url}]"
Logger.Info($"{method} {requestOverview}")
If response.StatusCode <> 200 Then
Logger.Warn($"{method} {requestOverview}")
End If
End If
Return MyBase.OnResourceResponse(browserControl, browser, frame, request, response)
End Function
End Class