使用sql server从url解析xml文件

时间:2013-09-24 11:23:09

标签: sql sql-server xml parsing

我从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设置并删除临时互联网失败

1 个答案:

答案 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)

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