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

想要获取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中保存的就是销货清单中的明细信息,然后再慢慢转成表格就可以了
posted @ 2023-06-25 15:42  wjbych  阅读(3105)  评论(0编辑  收藏  举报