Ответ 1
Вы можете использовать пространство имен System.Net.WebClient
, чтобы сделать запрос Http с помощью Script Task
в SSIS. В следующем примере показано, как это можно достичь. Пример был создан в SSIS 2008 R2
.
Шаг за шагом:
-
Создайте новый пакет SSIS и создайте две переменные: RemoteUri и LocalFolder. Задайте переменную
RemoteUri
со значениемhttp://www.google.com/intl/en_com/images/srpr/logo1w.png
. это URL-адрес изображения на главной странице Google. Установите переменнуюLocalFolder
со значениемC:\temp\
. это путь, по которому мы собираемся сохранить контент. См. Снимок экрана # 1. -
В пакете SSIS поместите
Script Task
. Замените метод Main() в задаче script кодом, указанным в разделе Script Код задачи. См. Снимок экрана # 2. -
Снимок экрана # 3 показывает, что путь
C:\temp\
пуст. -
Снимок экрана # 4 показывает успешное выполнение пакета.
-
Снимок экрана # 5 показывает, что содержимое (в данном случае изображение логотипа) было загружено на путь локальной папки.
-
Снимок экрана # 6 показывает, что код был протестирован для загрузки ZIP файла. Для этого значение переменной RemoteUri было изменено с помощью URL-адреса контента, который необходимо загрузить.
Script код задачи:
С#, который может использоваться только в SSIS 2008 and above
.
public void Main()
{
Variables varCollection = null;
Dts.VariableDispenser.LockForRead("User::RemoteUri");
Dts.VariableDispenser.LockForRead("User::LocalFolder");
Dts.VariableDispenser.GetVariables(ref varCollection);
System.Net.WebClient myWebClient = new System.Net.WebClient();
string webResource = varCollection["User::RemoteUri"].Value.ToString();
string fileName = varCollection["User::LocalFolder"].Value.ToString() + webResource.Substring(webResource.LastIndexOf('/') + 1);
myWebClient.DownloadFile(webResource, fileName);
Dts.TaskResult = (int)ScriptResults.Success;
}
Снимок экрана №1:
Снимок экрана №2:
Снимок экрана №3:
Снимок экрана №4:
Снимок экрана № 5:
Снимок экрана № 6: