我从url解析XML文件,当我第一次解析时它采取了正确的响应,但是当在url xml文件中更改时,sql server解析旧的响应(例如在第一次的东西= 5 sql server解析5,然后当在url something = 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设置并删除临时互联网失败
答案 0 :(得分:1)
您是否可以控制来自另一端的内容?你可以设置它不要缓存..
e.g。 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)
这假设另一端的服务器忽略了这个额外的参数......他们经常这样做