【发布时间】:2021-05-28 05:52:08
【问题描述】:
当发送 xml 到 tally 以从 tally 获取任何信息到 VB 时,响应 xml 仅显示 TallyPrime 服务器正在运行。当 xml 已更改或在 EXRes 接收来自计数的响应之前插入暂停/定时时,响应是相同的。
Public Sub LdrEx()
Dim ExCd As String
ExCd = LedXmCd()
Dim objXML As MSXML2.ServerXMLHTTP
Set objXML = New MSXML2.ServerXMLHTTP
objXML.Open "POST", "http://localhost:9000", False
objXML.send ExCd
Dim EXRes As String
EXRes = objXML.responseXML
Set objXML = Nothing
Dim TFile As String
TFile = Environ("HOMEDRIVE") & Environ("HOMEPATH") & "\Desktop\LdReceived.xml"
Open TFile For Output As #1
Print #1, EXRes
Close #1
End Sub
来自 LedXmCd() 的 XML 是:
<ENVELOPE>
<HEADER>
<VERSION>1</VERSION>
<TALLYREQUEST>EXPORT</TALLYREQUEST>
<TYPE>DATA</TYPE>
<ID>Voucher Register</ID>
</HEADER>
<BODY>
<DESC>
<STATICVARIABLES>
<SVFROMDATE TYPE="Date">20210101</SVFROMDATE>
<SVTODATE TYPE="Date">20210101</SVTODATE>
<VOUCHERTYPENAME TYPE="STRING">Receipt</VOUCHERTYPENAME>
</STATICVARIABLES>
</DESC>
</BODY>
</ENVELOPE>
【问题讨论】:
-
那不是VB.NET,所以我为您将标签更改为VB6 - 如果应该改为VBA,请更改它。
-
尝试使用
EXRes = objXML.ResponseText。仅供参考,ResponseXml是DOMDocument对象而不是String,当前代码正在检索其Xml默认属性。不幸的是,这个方便的DOMDocument实例仅在响应为内容类型发信号application/xml时才会自动初始化。