我正在处理一个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 结果可能会更容易。