XMLHTTPcaching:Xml在首次请求Excel VBA之后引入相同的数据

我正在阅读使用XMLHTTP XML的饲料。 我注意到,当我打开Excel文件的时候,第一次读取的很好,但是当XML改变了,我再次运行这个macros时,它带来了和以前相同的数据。 我做了一些关于如何停止caching的研究。 我读到,添加一个随机数作为额外的参数将解决它,但没有为我工作。

有任何想法吗?

 Sub MLB_PinnyParser() Dim Req As New XMLHTTP Dim Resp As New DOMDocument Req.Open "GET", "http://xml.pinnaclesports.com/pinnaclefeed.aspx?sporttype=Baseball&sportsubtype=MLB", False Req.send Resp.LoadXML Req.responseText For Each Event In Resp.getElementsByTagName("event") 'More code here Next Event Set Req = Nothing Set Resp = Nothing End Sub 

您通常可以通过修改每个请求的URL来克服这个问题。 只要添加一个随机数作为查询string参数。 例如:

 ' Seed the RNG somewhere at the start of your app... Randomize ... Sub MLB_PinnyParser() ' Generate a random, six-digit number... Dim intRand As Long intRand = Int((900000) * Rnd) + 100000 ' Add the number as a param to the request... Dim strUrl As String strUrl = "http://xml.pinnaclesports.com/pinnaclefeed.aspx?sporttype=Baseball&sportsubtype=MLB" & "&blah=" & intRand Dim Req As New XMLHTTP Req.Open "GET", strUrl, False ... End Sub 

既然听起来你已经尝试过了,试着在你的请求中添加一些与caching相关的标头,看看是否有所作为:

 Req.SetRequestHeader "Cache-Control", "no-cache,max-age=0" Req.SetRequestHeader "pragma", "no-cache" 

这不是一个XMLHTTP,Excel或VBA问题。 您尝试访问的Feed只会按特定的时间间隔更新,并且在请求中添加随机数对于此特定情况无效。

如果您在这里查阅Pinnacle Sports XML feed的序言(这将需要几秒钟的时间来生成页面),您将看到由您正在进行的调用返回的XML文件仅每十分钟更新一次。 正确的用法是在第一次调用时下载该文件,使用从第一次调用返回的时间戳作为第二次调用的参数请求增量更新,然后通过相应地增加时间戳并每隔60秒请求进一步更新(至多)作为参数。

或者,你可以看看使用他们的API而不是XML提要