【问题标题】:How to post XML document to HTTP with VB.Net如何使用 VB.Net 将 XML 文档发布到 HTTP
【发布时间】:2011-02-19 04:01:03
【问题描述】:

我正在寻求有关将我的 XML 文档发布到 VB.NET 中的 url 的帮助。这是我到目前为止所拥有的......

  Public Shared xml As New System.Xml.XmlDocument()

    Public Shared Sub Main()

        Dim root As XmlElement
        root = xml.CreateElement("root")
        xml.AppendChild(root)

        Dim username As XmlElement
        username = xml.CreateElement("username")
        username.InnerText = _username
        root.AppendChild(username)

        xml.Save(Console.Out)

        Dim url = "https://mydomain.com"
        Dim req As WebRequest = WebRequest.Create(url)
        req.Method = "POST"
        req.ContentType = "application/xml"
        req.Headers.Add("Custom: API_Method")

        Console.WriteLine(req.Headers.ToString())

这就是事情出错的地方:

我想发布 xml,然后将结果打印到控制台。

        Dim newStream As Stream = req.GetRequestStream()
        xml.Save(newStream)

        Dim response As WebResponse = req.GetResponse()
        Console.WriteLine(response.ToString())
 End Sub

【问题讨论】:

  • 请看link
  • 我看过这个,但我并不完全遵循它。 xml.length 不起作用。什么是字节数组?

标签: vb.net webrequest xmldocument webresponse


【解决方案1】:

这基本上就是我所追求的:

xml.Save(req.GetRequestStream())

【讨论】:

    【解决方案2】:

    如果不想在意长度,也可以使用WebClient.UploadData方法。

    我以这种方式稍微调整了你的 sn-p。

    Imports System.Xml
    Imports System.Net
    Imports System.IO
    
    Public Module Module1
    
        Public xml As New System.Xml.XmlDocument()
    
        Public Sub Main()
    
            Dim root As XmlElement
            root = xml.CreateElement("root")
            xml.AppendChild(root)
    
            Dim username As XmlElement
            username = xml.CreateElement("username")
            username.InnerText = "user1"
            root.AppendChild(username)
    
            Dim url = "http://mydomain.com"
            Dim client As New WebClient
    
            client.Headers.Add("Content-Type", "application/xml")
            client.Headers.Add("Custom: API_Method")
            Dim sentXml As Byte() = System.Text.Encoding.ASCII.GetBytes(xml.OuterXml)
            Dim response As Byte() = client.UploadData(url, "POST", sentXml)
    
            Console.WriteLine(response.ToString())
    
        End Sub
    
    End Module
    

    【讨论】:

    • xml.Save(req.GetRequestStream()) 现在警告:要写入流的字节超过指定的 Content-Length 字节大小
    • 我把原来的一点点改成了使用 WebClient 对象。
    • Content-length 是此 API 所需的标头。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    相关资源
    最近更新 更多