Hammertime
Hammertime

Reputation: 41

Send/POST xml file using VB

I am trying to post a well-formed cxml file to a remote server url. My code makes the connection but fails on the actual SEND command. I am not necessarily a newbie to VBA but I am a newbie to POSTING xml and posting help request to this forum. Hope I did it right.

I get status = 200 and a response of "Missing XML" when I post. It appears that the XML data is not actually getting uploaded to remote server

remoteurl = "http://myremoteurl.com/incoming"
FileNameXML = XML file read into a string variable
FileNameSource = fullpath & filename of XML file="C:\xmls\test00001.xml"

' I am calling the following function & storing response
xmlresp = HTTPPostTXT(remoteurl, FileNameXML, FileNameSource)

Function HTTPostTxt(ByVal sUrl As String, xmlText As String, ByVal xmlname As String)
  Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
  XMLHTTP.Open "POST", sUrl, False
  Set xmldom = CreateObject("Microsoft.XMLDOM")
  xmldom.LoadXML xmlText
  xmldom.Validate
  ' xmldom.xml does not error out but XML file does not get sent/uploaded 
  XMLHTTP.send xmldom.xml
  MsgBox XMLHTTP.Status & " " & XMLHTTP.responseText   ' Return Status # & reponseText

  ' I am storing response and status for troubleshooting
  If XMLHTTP.Status <> 200 Then
    Sheets(Shtname).Cells(iRow, 6).Value = XMLHTTP.responseText
    HTTPPostTxt = "Failure"
  Else
    Sheets(Shtname).Cells(iRow, 6).Value = XMLHTTP.responseText
    HTTPPostTxt = "Accepted"
  End If
End Function

(1) I am looking for help on what I am doing wrong with sending the XML string data. This is assuming that this is why I can't SEND data. Here is how I read the XML file into String variable

Function XMLFileString(ByVal XMLFileName As String) As String
  Dim text, textline As String
  Open XMLFileName For Input As #1
  Do Until EOF(1)
    Line Input #1, textline
    text = text & textline
  Loop
  Close #1
  XMLFileString = text
  End Function

(2) Changing the SEND command to send the actual file (using fullpath & filename) is an option. Not sure what to change. I think I need to change the LOADXML command to a LOAD and use the filename.

Upvotes: 3

Views: 4204

Answers (1)

Justin Dearing
Justin Dearing

Reputation: 14928

I would suggest using This library for making rest calls. Currently XML parsing requires a bit of a workaround, but its less code than all the boilerplate you wrote.,

Upvotes: 1

Related Questions