使用WebView2发送POST请求时,请求数据无法到达API端点
解决WebView2 POST请求API时参数为null的问题
核心问题
userData始终为null的主要原因是MemoryStream的读取位置未重置到起始处,写入JSON字节后流指针停在末尾,导致ASP.NET API无法读取到请求内容;同时补充请求头编码信息能避免潜在的解析问题。
修改步骤
1. 重置流的读取位置并完善请求头
在创建WebResourceRequest前,将MemoryStream的位置重置为0,同时明确请求头的编码格式:
url = "https://localhost:5001/Account/LoginMachine"; var userData = new UserData() { Username = "Test", Password = "abc" }; var jsonString = JsonSerializer.Serialize(userData); using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) { // 关键:将流指针移到起始位置,确保API能读取完整内容 stream.Position = 0; var request = webView.CoreWebView2.Environment.CreateWebResourceRequest( url, "POST", stream, "Content-Type: application/json; charset=utf-8"); webView.CoreWebView2.NavigateWithWebResourceRequest(request); }
2. 确认两端模型字段一致
检查WPF和ASP.NET端的UserData模型字段名称、大小写完全匹配:
// WPF端模型 public class UserData { public string Username { get; set; } public string Password { get; set; } } // ASP.NET端模型 public class UserData { public string Username { get; set; } public string Password { get; set; } }
3. 可选:验证请求完整性
用Fiddler或浏览器开发者工具捕获请求,确认:
- 请求体包含正确的JSON内容
- 请求头
Content-Type为application/json; charset=utf-8
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

