主要是继承实现 Cefsharp 的 IRquestHandler 对象,
废话不多说上代码:
- public class request : IRequestHandler
- {public event Action<string> msg;
- public event Action<string, object> msg2;
- public bool GetAuthCredentials(IwebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy,
- string host, int port, string realm, string scheme, IAuthCallback callback)
- {
- return false;
- }
- public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
- {
- //if (!response.ResponseHeaders["Content-Type"].Contains("application/json"))
- //{
- // return null;
- //}
- var filter = FilterManager.CreateFilter(request.Identifier.ToString());
- return filter;
- }
- private void Filter_VOIDFUN(string arg1, string arg2, string arg3, long arg4)
- {
- msg2?.Invoke(arg1, arg2);
- }
- public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request,
- bool isRedirect)
- {
- var m = request.Method;
- msg?.Invoke(request.Url);
- msg?.Invoke(m);
- if (request.Method == "POST")
- {
- using (var postData = request.PostData)
- {
- if (postData != null)
- {
- var elements = postData.Elements;
- var charSet = request.GetCharSet();
- foreach (var element in elements)
- {
- if (element.Type == PostDataElementType.Bytes)
- {
- var body = element.GetBody(charSet);
- msg?.Invoke(body);
- }
- }
- }
- }
- }
- return false;
- }
- public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
- {
- var m = request.Method;
- msg?.Invoke(request.Url);
- msg?.Invoke(m);
- if (request.Method == "POST")
- {
- using (var postData = request.PostData)
- {
- if (postData != null)
- {
- var elements = postData.Elements;
- var charSet = request.GetCharSet();
- foreach (var element in elements)
- {
- if (element.Type == PostDataElementType.Bytes)
- {
- var body = element.GetBody(charSet);
- msg?.Invoke(body);
- }
- }
- }
- }
- }
- return CefReturnValue.Continue;
- }
- public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
- {
- return true;
- }
- public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
- {
- return false;
- }
- public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath)
- {
- }
- public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url)
- {
- return false;
- }
- public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
- {
- return false;
- }
- public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status)
- {
- }
- public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser)
- {
- }
- public void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
- {
- }
- public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl)
- {
- }
- public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl)
- {
- }
- public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
- {
- return false; ;
- }
- public bool OnSelectClientCertificate(IWebBrowser browserControl, IBrowser browser, bool isProxy, string host, int port, X509Certificate2Collection certificates, ISelectClientCertificateCallback callback)
- {
- return true;
- }
- }
来源: https://blog.csdn.net/u010919083/article/details/79358775