VB.NET下简化JSON格式POST请求实现方案咨询
VB.NET POST JSON 简化实现方案
当然有更简洁的实现方式,主要分两种方向:
1. 使用现代的 HttpClient(推荐)
HttpWebRequest 是较旧的API,.NET Framework 4.5及以上、.NET Core/.NET 5+都支持更简洁的HttpClient,它自带JSON序列化能力(.NET Core/.NET 5+默认包含相关组件,.NET Framework需手动安装System.Net.Http.Json NuGet包),能大幅减少代码量:
' 建议HttpClient全局单例使用,避免频繁创建释放资源 Dim httpClient As New HttpClient() httpClient.DefaultRequestHeaders.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "80mgkm6D60OtY16pzs93WoYmx2kzTgf3CELERMVg") ' 直接传入对象,自动完成JSON序列化并设置Content-Type Dim response As HttpResponseMessage = Await httpClient.PostAsJsonAsync("myurl", MyClase) response.EnsureSuccessStatusCode() ' 可选,用于确保请求执行成功
如果需要同步执行(非异步场景),可以用.Result替代异步调用:
Dim response As HttpResponseMessage = httpClient.PostAsJsonAsync("myurl", MyClase).Result
2. 优化原有 HttpWebRequest 代码
如果必须沿用HttpWebRequest,可以通过Using语句自动管理流资源,省去手动关闭的步骤,简化代码同时提升安全性:
Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create("myurl"), HttpWebRequest) request.Method = "POST" request.ContentType = "application/json" request.Headers.Add("authorization", "Bearer 80mgkm6D60OtY16pzs93WoYmx2kzTgf3CELERMVg") Dim postString As String = JsonConvert.SerializeObject(MyClase) Using byteArray As Byte() = Encoding.UTF8.GetBytes(postString) request.ContentLength = byteArray.Length Using dataStream As Stream = request.GetRequestStream() dataStream.Write(byteArray, 0, byteArray.Length) End Using End Using ' 此处可继续处理响应,例如调用request.GetResponse()
Using语句会自动调用资源的Dispose方法,替代手动Close操作,代码更简洁且能避免资源泄漏。
内容的提问来源于stack exchange,提问作者Bladimir Silva Toro
相关产品推荐
相关产品推荐

