当前位置: 首页 > news >正文

cefsharp获取ajax返回值,使用CEfSharp之旅(6)攔截網絡請求 截取response返回

主要是繼承實現 Cefsharp的IRquestHandler對象,

廢話不多說上代碼:

public class request : IRequestHandler

{

public event Action msg;

public event Action 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;

}

}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AES (http://www.cryptosystem.net/aes/)
  • 苹果备份显示服务器失败是怎么回事,iPhone显示备份失败应该如何解决
  • 股票服务器系统,股票系统_ 《梦幻西游》电脑版官方网站 - 网易西游题材扛鼎之作...
  • 饮恨(二)
  • 聚类Kmeans学习笔记
  • 对于署名的呐喊
  • 循环神经网络(RNN LSTM)学习笔记 (1)
  • 羌狼移动开发简明目录(2004.11)
  • 课程笔记(1)中的代码问题
  • 遗憾而归
  • pytorch(1)梯度下降
  • 姐妹情深
  • pytorch(2)手写数字识别引入Pytorch 数据类型
  • 一辑非常好的人体外拍
  • pytorch(3)创建Tensor
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript学习总结——原型
  • Java深入 - 深入理解Java集合
  • node和express搭建代理服务器(源码)
  • Promise初体验
  • Python_OOP
  • React系列之 Redux 架构模式
  • socket.io+express实现聊天室的思考(三)
  • vue-loader 源码解析系列之 selector
  • 翻译--Thinking in React
  • - 概述 - 《设计模式(极简c++版)》
  • 构建工具 - 收藏集 - 掘金
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 容器服务kubernetes弹性伸缩高级用法
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 用element的upload组件实现多图片上传和压缩
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #### golang中【堆】的使用及底层 ####
  • #Linux(帮助手册)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (4) PIVOT 和 UPIVOT 的使用
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (超详细)语音信号处理之特征提取
  • (分类)KNN算法- 参数调优
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)可以带来幸福的一本书
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ./configure、make、make install 命令
  • .NET C# 配置 Options
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验