在 SSIS 中执行 HTTP get 操作以从 API 提取信息



我正在处理一个SSIS包,以便从API获取一些信息。是否有任何组件或扩展可以在 SSIS 中用于执行 HTTP 请求或响应操作。我的 API 是 JSON 格式。它有两个字段 ID 和日期。我正在尝试通过提供 ID 来获取"日期"字段。

我是 c# 和 SSIS 的新手。请让我知道我是否应该尝试使用脚本组件,或者 SSIS 中是否有任何替代扩展来执行此操作。

在这里使用 SSIS 中的脚本组件是我尝试过的。

这是我在参考本文后尝试的内容。

public override void CreateNewOutputRows()
{
    string serviceDate = Variables.TaskID;
    string wUrl = "https://virtserver.swaggerhub.com/Monish/Disenrollment/1.0.0/inventory?searchString=" + serviceDate;
    try
    {
        WorkGroupMetric[] outPutMetrics = GetWebServiceResult(wUrl);
        foreach( var metric in outPutMetrics)
        {
            Output0Buffer.AddRow();
            Output0Buffer.DisenrollmentDate = metric.CN;

        }
    }
    catch (Exception e)
    {
        FailComponent(e.ToString());
    }
}
private WorkGroupMetric[] GetWebServiceResult(string wUrl)
{
    HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(wUrl);
    HttpWebResponse httpWResp = (HttpWebResponse)httpWReq.GetResponse();
    WorkGroupMetric[] jsonResponse = null;
    try
    {
        //Test the connection
        if(httpWResp.StatusCode == HttpStatusCode.OK)
        {
            Stream responseStream = httpWResp.GetResponseStream();
            string jsonString = null;
            //Set jsonString
            using (StreamReader reader = new StreamReader(responseStream))
            {
                jsonString = reader.ReadToEnd().Replace("\", "");
                reader.Close();
            }
            //Desearialize our JSON
            JavaScriptSerializer sr = new JavaScriptSerializer();
            jsonResponse = sr.Deserialize<WorkGroupMetric[]>(jsonString.Trim('"'));
        }
        //Output connection error message
        else
        {
            FailComponent(httpWResp.StatusCode.ToString());
        }
    }
    catch (Exception e)
    {
        FailComponent(e.ToString());
    }
    return jsonResponse;
}

Web 服务任务仅支持 http 请求,您发布的代码中的 URL 使用 https。除了脚本任务之外,我发现还有另一个选项更容易实现(在大多数情况下(,使用"执行进程"任务启动 powershell,然后执行脚本以下载数据。你试过你发布的代码吗?该服务是否有"类型"参数?如果是这样,使用 xml 结果可能会更容易。

相关内容

  • 没有找到相关文章

最新更新