2015-01-20 227 views
3

我想將格式良好的cxml文件發佈到遠程服務器url。我的代碼建立連接,但在實際的SEND命令上失敗。我不一定是VBA的新手,但我是POSTING XML的新手,並向本論壇發佈求助請求。希望我做對了。使用VB發送/ POST xml文件使用VB

當我發佈時,我得到status = 200和「Missing XML」的響應。看來,XML數據沒有得到實際上傳到遠程服務器

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)我尋求幫助的我在做什麼毛病發送XML字符串數據。這是假定這就是我無法發送數據的原因。下面是我如何讀取XML文件轉換成字符串變量

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)改變SEND命令發送實際的文件(使用FULLPATH &文件名)是一個選項。不知道要改變什麼。我想我需要將LOADXML命令更改爲LOAD並使用文件名。

回答

1

我建議使用This library進行休息電話。目前XML解析需要一些解決方法,但其代碼少於您編寫的所有樣本代碼。,