You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:12:15