如何在VB.NET中向公司内网服务器发送POST请求?
在VB.NET中调用内网XML服务执行Ping操作
你已经有了Postman的请求模板,接下来我们可以把它转换成VB.NET的代码实现,用WebRequest或者更现代的HttpClient都可以,我会给你两种方案参考:
方案一:使用传统的WebRequest
这是和你最初想法匹配的实现方式,完全对应你提供的请求参数:
Imports System.IO Imports System.Net Imports System.Xml Sub PingInternalService() ' 服务器地址和接口路径 Dim requestUrl As String = "http://xxx001/xxx/XmlService" ' 创建WebRequest实例 Dim request As WebRequest = WebRequest.Create(requestUrl) request.Method = "POST" request.ContentType = "text/xml" ' 添加请求头(按需保留,Postman-Token是工具标识,服务器可能不需要) request.Headers.Add("Postman-Token", "xxx") request.Headers.Add("Cache-Control", "no-cache") ' 构造XML请求体,注意VB.NET中双引号需要用""转义 Dim xmlRequestBody As String = "<?xml version=""1.0"" ?>" & "<xxx version=""1.0"">" & "<Request Object=""System"" Action=""Ping"">" & "</Request>" & "</xxx>" ' 将XML写入请求流 Using streamWriter As New StreamWriter(request.GetRequestStream()) streamWriter.Write(xmlRequestBody) End Using ' 获取并处理响应 Try Using response As WebResponse = request.GetResponse() Using streamReader As New StreamReader(response.GetResponseStream()) Dim responseXml As String = streamReader.ReadToEnd() ' 解析XML响应,这里示例用XmlDocument加载 Dim xmlDoc As New XmlDocument() xmlDoc.LoadXml(responseXml) Console.WriteLine("Ping响应结果:" & xmlDoc.OuterXml) End Using End Using Catch ex As WebException ' 捕获请求异常,便于排查问题 Console.WriteLine("请求出错:" & ex.Message) If ex.Response IsNot Nothing Then Using errorStream As New StreamReader(ex.Response.GetResponseStream()) Console.WriteLine("错误详情:" & errorStream.ReadToEnd()) End Using End If End Try End Sub
方案二:使用更现代的HttpClient(推荐)
.NET Framework 4.5+及.NET Core/.NET 5+都支持HttpClient,它的API更简洁易用,且性能更优:
Imports System.Net.Http Imports System.Threading.Tasks Async Function PingInternalServiceAsync() As Task Dim requestUrl As String = "http://xxx001/xxx/XmlService" Dim xmlRequestBody As String = "<?xml version=""1.0"" ?>" & "<xxx version=""1.0"">" & "<Request Object=""System"" Action=""Ping"">" & "</Request>" & "</xxx>" ' 建议全局复用HttpClient实例,避免频繁创建销毁 Using httpClient As New HttpClient() ' 添加请求头 httpClient.DefaultRequestHeaders.Add("Cache-Control", "no-cache") httpClient.DefaultRequestHeaders.Add("Postman-Token", "xxx") ' 创建请求体并指定Content-Type Dim content As New StringContent(xmlRequestBody, System.Text.Encoding.UTF8, "text/xml") Try Dim response As HttpResponseMessage = Await httpClient.PostAsync(requestUrl, content) response.EnsureSuccessStatusCode() ' 状态码非2xx时抛出异常 Dim responseXml As String = Await response.Content.ReadAsStringAsync() Console.WriteLine("Ping响应结果:" & responseXml) ' 这里可以继续解析XML内容 Catch ex As HttpRequestException Console.WriteLine("请求出错:" & ex.Message) End Try End Using End Function
关键注意事项
- 内网连通性:确保你的VB.NET应用能访问到
xxx001服务器,可尝试用服务器IP替代域名测试,排查DNS解析问题。 - 请求头取舍:
Postman-Token是Postman工具的标识,多数服务器不需要这个头,测试时可以先移除,避免不必要的干扰。 - XML格式校验:确保请求体的XML结构和Postman中完全一致,注意标签闭合、属性引号等细节。
- 异常处理:务必保留异常捕获逻辑,内网服务可能存在权限、连接超时等问题,异常信息能帮你快速定位问题。
你可以根据自己的.NET版本选择合适的方案,测试时先输出原始响应XML,确认和Postman返回一致后,再进行后续的业务解析处理。
内容的提问来源于stack exchange,提问作者dya
相关产品推荐
相关产品推荐

