我有一個相當大的XML文件,我想通過http發送到設備。我正在使用的方法是創建Xmldocument(稱爲doc),將outerXML轉換爲字符串,並使用HttpWebResponse發送它。通過http發送xml失去縮進
這裏是XML的一部分:
<MotionDetection>
<id>1</id>
<enabled>true</enabled>
<samplingInterval>2</samplingInterval>
<startTriggerTime>500</startTriggerTime>
<endTriggerTime>500</endTriggerTime>
<regionType>grid</regionType>
<Grid>
<rowGranularity>15</rowGranularity>
<columnGranularity>22</columnGranularity>
</Grid>
</MotionDetection>
問題:每當我在互聯網上發送我的代碼,它不接受它(給我一個壞的請求響應),因爲XML是缺少導致wireshark嗅探器看起來像xml的「縮進」或vbCrlfs,而不是一堆被砸碎在一起的字符串。
有沒有辦法使用httpwebresponse發送它,以便那些留在請求中? 當然,除了打破字符串和「手」插入它?
這是我目前的代碼,因爲我也嘗試使用上傳客戶端而不是httpwebrequest。
Dim doc As New Xml.XmlDocument
doc.Load("test.xml")
Try
Dim url = "http://" & currentCamera.ipaddr & "/Custom/Motion"
Dim client As New WebClient
client.Credentials = New Net.NetworkCredential(currentCamera.Username, currentCamera.Password)
Dim sentXml As Byte() = System.Text.Encoding.ASCII.GetBytes(doc.OuterXml)
Dim response2 As Byte() = client.UploadData(url, "PUT", sentXml)
Catch ex As Exception
End Try
在XML中丟失空白似乎不會導致錯誤。它可能是你有一個無用的空格字符,作爲XML元素之外的空格和空格。嘗試使用可以理解XML的編輯器(如Notepad ++)查看您要發送的XML。還可以獲取XML工具插件,其中包含一些QA工具和漂亮的打印格式,可幫助您查找錯誤。將XML保存到文件並在IE中查看可能會顯示錯誤。 – rheitzman 2014-09-22 21:58:26
'Dim sentXml = File.ReadAllBytes(「test.xml」)''? – 2014-09-24 00:01:46