SMART LLC

XML形式のデータをPOST送受信する方法(.NET)

公開日:2015/08/09

XMLでPOSTするWeb APIがあった。
VB.NETでXML形式のデータをPOSTする方法をメモする。

XMLデータの生成

XMLデータはこんな感じで作れる。

Dim doc As New XmlDocument

Dim declaration As XmlDeclaration = doc.CreateXmlDeclaration("1.0", "utf-8", Nothing)
doc.AppendChild(declaration)

Dim parent As XmlElement = doc.CreateElement("Parent")
doc.AppendChild(parent)

Dim child As XmlElement = doc.CreateElement("Child")
parent.AppendChild(child)

Dim grandchild As XmlElement = doc.CreateElement("Grandchild")
part.SetAttribute("Attribute", "aaa")
child.AppendChild(grandchild)

Dim value As XmlText = doc.CreateTextNode("bbb")
grandchild.AppendChild(value)

XMLデータを文字列で取り出して表示してみる。

Console.WriteLine(doc.OuterXml)

こうなる。

<?xml version="1.0" encoding="utf-8"?><Parent><Child><Grandchild Attribute="aaa">bbb</Grandchild></Child></Parent>

XmlDocument.CreateXmlDeclaration、XmlDocument.CreateElement、XmlDocument.CreateElementで各要素を生成して
XmlDocument.AppendChild()、XmlElement.AppendChild()で追加していく。
属性を持たせる場合はXmlElement.SetAttribute()。

POST送信

POSTする時はStringContentに格納してHttpClient.PostAsync。

Using data As New StringContent(doc.OuterXml, Encoding.UTF8, "application/xml"), _
hc As New HttpClient, _
postTask As Task(Of HttpResponseMessage) = hc.PostAsync("https://posttestserver.com/post.php", data)
    postTask.Wait()
End Using

三度登場Henry's HTTP Post Dumping Server

XMLデータを受け取る場合

サーバの戻り値がXMLデータの場合はXmlDocument.LoadXml()で読み込む。

Using res As HttpResponseMessage = postTask.Result, _
readTask As Task(Of String) = res.Content.ReadAsStringAsync
	readTask.Wait()
	Dim ret As New XmlDocument
	ret.LoadXml(readTask.Result())
End Using

SHARE