首页 > 编程语言 >C#使用webview2来获取网页响应的一些内容

C#使用webview2来获取网页响应的一些内容

时间:2023-06-25 15:57:51浏览次数:44  
标签:CoreWebView2 C# webview2 StreamReader content 网页 jsonText Response WebResourceRe

想要获取webview2和网页之间的响应内容,需要在CoreWebView2InitializationCompleted事件中重写一下WebResourceResponseReceivedAsync事件,如下

 private void webView2_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
        {
//进行网址过滤,这里是用来获取税务网站的发票明细信息 webView2.CoreWebView2.AddWebResourceRequestedFilter("https://inv-veri.chinatax.gov.cn/*", CoreWebView2WebResourceContext.All); webView2.CoreWebView2.WebResourceResponseReceived += CoreWebView2_WebResourceResponseReceivedAsync; }

重写WebResourceResponseReceivedAsync,这里面可以做的事情有好多,我写的很乱,可以遍历e.request.headers和e.Response.Headers

由于网页会多次返回内容触发这个事件,所以根据实际情况进行过滤和判断吧。

private async void CoreWebView2_WebResourceResponseReceivedAsync(object sender, CoreWebView2WebResourceResponseReceivedEventArgs e)
        {
            
            string res = "";
            //foreach (var current in e.Request.Headers)
            //{
            //    L1.Items.Add(current);
            //}

            // Headers in response received
            testnum += 1;
            if (e.Response != null && e.Response.StatusCode == 200)
            {
              if(num == 5) 
                {
                    Stream content = await e.Response.GetContentAsync();
                    StreamReader sr = new StreamReader(content, System.Text.Encoding.UTF8);
                    string jsonText = sr.ReadToEnd();
                    if (jsonText.Contains("详见销货清单")) 
                    {
         
                        rtx_html.Text = jsonText;
                        //content.Seek(0,SeekOrigin.Begin);
                        //StreamReader streamReader = new StreamReader(content);
                        //while (streamReader.Peek() != -1)
                        //{
                        //    //读取文件中的一行字符
                        //    string str = streamReader.ReadLine();
                        //    messageBuilder.AppendLine(str);
                        //}
                        //streamReader.Close();
                    }
                    //messageBuilder.AppendLine(jsonText);

                    //using (var fileStream = File.Create("D:\\DOS\\"+testnum.ToString()+".txt"))
                    //{
                    //    content.Seek(0, SeekOrigin.Begin);//设置复制开始的地方
                    //    content.CopyTo(fileStream);
                    //}

                }

            }
jsonText中保存的就是销货清单中的明细信息,然后再慢慢转成表格就可以了

标签:CoreWebView2,C#,webview2,StreamReader,content,网页,jsonText,Response,WebResourceRe
From: https://www.cnblogs.com/wjbych/p/17503090.html

相关文章

  • ICT应用解决方案08-华为防火墙NAT及安全部署
    ICT应用解决方案08-华为防火墙NAT及安全部署1防火墙NAT1.1NAT技术的基本原理NAT技术通过对IP报文头中的源地址或目的地址进行转换,可以使大量的私网IP地址通过共享少量的公网IP地址来访问公网或使得公网可以访问私网NAT分类:静态NAT:服务器映射,一对一动态NAT:服务器......
  • 【pycharm】替换字符串的三种方法
    一、场景  工作中我们可能需要修改一些字符串为同一字符串,此时pycharm的一些替换功能就很好用 二、快捷键1、基于当前文件CTRL+R2、基于全局的替换 CTRL+SHIFT+R  三、替换的三种方法1、基于Cc的字符串 这种最简单,就是简单的替换某个字符串为另一个,可以......
  • 「JOISC 2020 Day2」遗迹
    「JOISC2020Day2」遗迹题目大意:给定长度为\(2n\)的序列\(h_i\),满足对于所有\(k\in[1,n]\),均存在两个\(i\)满足\(h_i=k\),定义“地震”为如下操作:对于所有\(i\in[1,2n]\),当且仅当\(h_i>0\)且对于所有\(j>i\)都有\(h_i\neqh_i\)时,\(h_i\leftarrowh......
  • this.selectComponent('#test'); 打印一直是null
    this.selectComponent('#test');打印一直是null组件里面的options这个选项virtualHost:true,影响的。太坑了。。。options:{virtualHost:true,}删除就好了。网上搜到到很多种情况,但是都不是:   最后发现是: 组件里面的options这个选项virtualHost:tr......
  • 构建高可用性的 SQL Server:Docker 容器下的主从同步实现
    摘要:本文将介绍如何在Docker环境下搭建MSSQLServer的主从同步,帮助读者了解主从同步的原理和实现方式,进而提高数据的可靠性和稳定性。一、前言在当今信息化的时代,数据的安全性和稳定性显得尤为重要。数据库是许多企业和组织存储和管理数据的核心,因此如何保证数据库的高可用......
  • 使用java中的Calendar遇到的时区问题
    项目中有一个增加1小时的工具函数结果今天测试出现了一个问题原因是1986年的9月13号到14号之间会有一个时区的转换需要程序特殊处理下这是原函数的结果SatSep1322:00:00CDT1986SatSep1323:00:00CDT1986SatSep1323:00:00CST1986SunSep1400:0......
  • django 上下文管理器 get_context_data 使用
    在Django中,序列化器(serializer)是用于处理数据的序列化和反序列化的类。而get_context_data()方法是用于获取视图上下文数据的方法。默认情况下,序列化器无法直接拿到get_context_data()中的内容。如果你希望将get_context_data()中的内容传递给序列化器进行处理,可以通过以下几种方......
  • 信驰达科技携手TI将CC2340推向更广市场领域
    根据蓝牙技术联盟(BluetoothSIG)2023年最新发布《2023年蓝牙市场最新资讯》,市调机构ABIResearch预测数据显示,蓝牙市场在未来五年将会实现高增长,蓝牙设备年出货量将保持强劲增长势头,预计到2027年将达76亿台,年复合增长率为9%,受外围设备持续强劲增长的推动,单模式低功耗蓝牙设备的出货......
  • CIO时代数字化研习社正式开讲
    2023年6月17日,CIO时代数字化研习社正式开讲,来自北京、上海、深圳、成都和沈阳等分社的部分社员分别在各地分社直播课堂参加了学习。本期直播课堂主题是《智能时代的数字化转型》,由CIO时代创始人兼研究院院长姚乐博士主讲。课堂最后,姚博士还通过远程视频方式一一回答了各分社提出的......
  • 构建高可用性的 SQL Server:Docker 容器下的主从同步实现
    摘要:本文将介绍如何在Docker环境下搭建MSSQLServer的主从同步,帮助读者了解主从同步的原理和实现方式,进而提高数据的可靠性和稳定性。一、前言在当今信息化的时代,数据的安全性和稳定性显得尤为重要。数据库是许多企业和组织存储和管理数据的核心,因此如何保证数据库的高可用性......