从SQL Server中的URL捕获响应

时间:2016-05-27 11:48:25

标签: sql-server stored-procedures

我有2个网址,

  1. http://comtrade.un.org/api/get?type=C&freq=M&px=HS&ps=201001&r=32&p=all&rg=all&cc=All&fmt=csv
  2. http://comtrade.un.org/api/get/bulk/S/A/2010/0/EB02
  3. 我正在从2个网址捕获回复,第一个网址将为您提供可下载的CSV文件,第二个网址提供文本回复(例如:{“消息”:“未找到。”})

    我想从URL中捕获响应,第二个我可以轻松捕获它作为基于文本的响应,但第一个是花时间,因为URL提供CSV文件和对象“Microsoft.XMLHTTP”下载文件&更新响应。 由于某些CSV文件的数据超过20MB,因此花费了大量时间。

    我总共有25K链接。

    现在我希望像链接“CSV文件存在”一样捕获如第一个,表示如果存在csv,则状态应为“CSV文件存在”。

    你能帮助我实现它吗?我正在使用的PFB程序,

    create procedure [dbo].[hit_url_adv](@url varchar(500),@fresults varchar(25) output,@ResponseText Varchar(8000) output)
    as
    begin
    
    --sp_configure 'show advanced options', 1  
    --GO   
    --RECONFIGURE;  
    --GO  
    --sp_configure 'Ole Automation Procedures', 1  
    --GO   
    --RECONFIGURE;  
    --GO   
    --sp_configure 'show advanced options', 1  
    --GO   
    --RECONFIGURE;  
    
    declare @object int
    declare @var varchar(1000)
    declare @return int
    declare @valid int
    
    set @valid = 0;set @ResponseText=''
    
    --create the XMLHTTP object
    exec @return = sp_oacreate 'Microsoft.XMLHTTP', @object output
    
    if @return = 0
    begin
        --Open the connection
    
        set @var='open("GET", "' + @url + '", false)'
        exec @return = sp_oamethod @object, @var
    
        if @return = 0
        begin
            --Send the request
            exec @return = sp_oamethod @object, 'send()'
            exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT   
            set @ResponseText=@ResponseText
        end
    
        if @return = 0
        begin
            declare @output int
            exec @return = sp_oamethod @object, 'status', @output output
            if @output = 200 set @valid = 1
        end
    end
    
    --destroy the object
    exec sp_oadestroy @object
    
    if @valid = 1 set @fresults='Success'
    else set @fresults='Failure' 
    

0 个答案:

没有答案