IT *_*DAV 2 c# httpresponse webbrowser-control webview2
我正在尝试使用 WebView2 并获取服务器响应代码。然而,由于某种原因,CoreWebView2WebResourceRequestedEventArgs.Response 始终为 null:
webView.CoreWebView2Ready += CoreWebView2Ready;
private void CoreWebView2Ready(object sender, EventArgs e)
{
webView.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All);
webView.CoreWebView2.WebResourceRequested += WebResourceRequested;
}
private void WebResourceRequested(object sender, CoreWebView2WebResourceRequestedEventArgs e)
{
/* e.Response is always null for some reason */
if (e.Response != null)
{
int statusCode = e.Response.StatusCode;
string header = e.Response.Headers.GetHeader("myheader");
}
}
Run Code Online (Sandbox Code Playgroud)
如何获取响应代码?
我认为e.Response总是会这样null,因为WebResourceRequested事件是在发送请求之前触发的。您应该在事件处理程序中创建响应。那不是你想要的。
所以你会怎么做?好吧,新的预发布版本WebView2可能有您想要的 - 一个WebResourceResponseReceived事件。当您收到服务器的响应时会触发此操作,并且此处e.Response将可用。
使用方法:
Microsoft.WebView2 预发布版本(最新)。现在您可以使用如下代码(注意新事件名称):
using Microsoft.Web.WebView2.Core;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void WebView21_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
{
webView21.CoreWebView2.WebResourceResponseReceived += CoreWebView2_WebResourceResponseReceived;
}
private void CoreWebView2_WebResourceResponseReceived(object sender, CoreWebView2WebResourceResponseReceivedEventArgs e)
{
if (e.Response != null && e.Response.Headers.Contains("date"))
{
int statusCode = e.Response.StatusCode;
string header = e.Response.Headers.GetHeader("date");
MessageBox.Show(header);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,e.Response.Headers.GetHeader如果标头不存在,则会抛出异常,因此请先检查它。
| 归档时间: |
|
| 查看次数: |
5333 次 |
| 最近记录: |