using CefSharp; using System; namespace UAS_Web.tool { class RequestHandler : IRequestHandler { public event Action NotifyMsg; MessageFilter filter=null; IResponseFilter IRequestHandler.GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { Console.WriteLine("GetResourceResponseFilter1"); var url = new Uri(request.Url); if (url.AbsoluteUri.Contains("http://192.168.253.6/uas_dev/jsps/vendbarcode/login.jsp")) { var filter = FilterManager.CreateFilter(request.Identifier.ToString()); return filter; } return null; } void filter_NotifyData(byte[] data) { if (NotifyMsg != null) { NotifyMsg(data); } } void IRequestHandler.OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength) { Console.WriteLine("OnResourceLoadComplete1"); if (request.Url.Contains("http://192.168.253.6/uas_dev/jsps/vendbarcode/login.jsp")) { var filter = FilterManager.GetFileter(request.Identifier.ToString()) as MessageFilter; //string str = System.Text.Encoding.ASCII.GetString(filter.dataAll.ToArray()); filter_NotifyData(filter.dataAll.ToArray()); } } public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback) { Console.WriteLine("GetAuthCredentials"); return false; } //public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) //{ // Console.WriteLine("GetResourceResponseFilter"); // return new MessageFilter(); //} public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect) { Console.WriteLine("OnBeforeBrowse"); return false; } public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback) { Console.WriteLine("OnBeforeResourceLoad"); return CefReturnValue.Continue; } public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback) { Console.WriteLine("OnCertificateError"); return false; } public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture) { Console.WriteLine("OnOpenUrlFromTab"); return false; } public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath) { Console.WriteLine("OnPluginCrashed"); } public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url) { Console.WriteLine("OnProtocolExecution"); return false; } public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback) { Console.WriteLine("OnQuotaRequest"); return false; } public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status) { Console.WriteLine("OnRenderProcessTerminated"); } public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser) { Console.WriteLine("OnRenderViewReady"); } public void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength) { Console.WriteLine("OnResourceLoadComplete"); } public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl) { Console.WriteLine("OnResourceRedirect"); } bool IRequestHandler.OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { Console.WriteLine("OnResourceResponse"); try { var content_length = int.Parse(response.ResponseHeaders["Content-Length"]); if (filter != null) { filter.SetContentLength(content_length); } } catch { } return false; } } }