首页 > 解决方案 > 如何向公司网络上的服务器发出 POST 请求

问题描述

我已经获得了一些数据来执行对包含在我们工作网络中的服务器的 ping 调用。这个调用必须发生在我构建的 vb.net 应用程序中,但我真的很难开始使用这个。我试过创建一个 WebRequest,但我什至不确定那是正确的。

这是我所拥有的(“xxx”替换敏感部件):

POST /xxx/XmlService HTTP/1.1
Host: xxx001 (this is just the server name)
Content-Type: text/xml
Cache-Control: no-cache
Postman-Token: xxx (long token)

<?xml version="1.0" ?>
<xxx version="1.0">
        <Request
                Object="System"
                Action="Ping">
        </Request>
</xxx>

我期待一个 XML 响应回来。

至少有人能指出我正确的方向吗?非常感谢你!

标签: vb.netpost

解决方案


我终于把它连接起来了。以下是关注者的方法(使用与 OP 中相同的替换“xxx”字符串):

    Dim uriTest As Uri
    uriTest = New Uri("http://xxx001/xxx/XmlService")


    Dim requestStr As String
    requestStr = Strings.Trim("POST /xxx/XmlService HTTP/1.1" & Environment.NewLine &
                              "Host: xxx001" & Environment.NewLine &
                              "Content-Type: text/xml" & Environment.NewLine &
                              "Cache-Control: no-cache" & Environment.NewLine &
                              "Postman-Token: 6672bfe9-6d44-4770-869d-4f08c24ab143" & Environment.NewLine & Environment.NewLine &
                              "<?xml version=""1.0"" ?>" & Environment.NewLine &
                              "<xxx version=""1.0"">" & Environment.NewLine &
                              "<Request" & Environment.NewLine &
                              "Object=""System""" & Environment.NewLine &
                              "Action=""Ping"">" & Environment.NewLine &
                              "</Request>" & Environment.NewLine &
                              "</xxx>")
    Dim req As HttpWebRequest, webreq As WebRequest
    webreq = WebRequest.Create(uriTest)
    req = CType(webreq, HttpWebRequest)

    req.Method = "POST"

    Dim dataStream As Stream = req.GetRequestStream()
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(requestStr)
    dataStream.Write(byteArray, 0, byteArray.Length)
    dataStream.Close()
    Dim response As WebResponse = req.GetResponse()
    Console.WriteLine(CType(response, HttpWebResponse).StatusDescription)
    dataStream = response.GetResponseStream()
    Dim reader As New StreamReader(dataStream)
    Dim responseFromServer As String = reader.ReadToEnd()
    Console.WriteLine(responseFromServer)
    reader.Close()
    dataStream.Close()
    response.Close()

推荐阅读