1

我正在从 url 解析 XML 文件,当我第一次解析时它需要正确的响应,但是当 url xml 文件更改时,sql server 解析旧响应(例如,第一次 some=5 sql server parse 5,然后在 url 中= 6 sql server 再次解析 5)。但我认为存在缓存问题,因为当我在 IE 历史记录中删除包括 cookie 等时,SQL 服务器会解析正确的响应。怎么解决?我这样解析:

Declare @Object as Int; 
Declare @ResponseText as Varchar(8000); 
Declare @Url as Varchar(MAX); 

    select @Url = 'http://myurl'

    Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; 
    Exec sp_OAMethod @Object, 'open', NULL, 'get', @Url, 'false' 
    Exec sp_OAMethod @Object, 'send' 
    Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT      
    Exec sp_OADestroy @Object 

    --load into Xml 
    Declare @XmlResponse as xml; 
    select @XmlResponse = CAST(@ResponseText as xml)  
    select @XmlResponse.value('(//response/comment)[1]','varchar(50)')

编辑:我解决了,每次访问页面时更改 IE 设置并删除临时 Internet 失败

4

1 回答 1

1

您是否可以控制来自另一端的内容?您可以将其设置为不缓存..

例如 asp.net(https://stackoverflow.com/a/4080188):

Response.AddHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");

或经典asp(https://stackoverflow.com/a/17390837):

Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache" 

如果您无法访问另一端,那么您可以做的就是在您的请求中添加一个始终更改的额外参数 - 例如时间。

select @Url = 'http://myurl?time='+CONVERT(NVARCHAR(30),GETDATE(),120)

这假设另一端的服务器忽略了这个额外的参数..他们经常这样做

于 2013-09-24T14:30:21.223 回答