powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSIS и HTTP запрос
8 сообщений из 8, страница 1 из 1
SSIS и HTTP запрос
    #40127511
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Пытаюсь понять, как с HTTP запроса считать данные в Visual Studio (2016), используя пакет SSIS.
Тоесть, если бы это было через WebSevice, то проблем бы не было (задача WebTask умееет сама парсить WSDL и читать его методы).
А вот если запрос прямой, который отдает сразу XML. Как можно получить XML используя VS.
Ссылка для примера, курсы валю ЦБ (выдает сразу XML). тут
...
Рейтинг: 0 / 0
SSIS и HTTP запрос
    #40127528
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed,

Script Task на С# (ну или VB.Net, если так уж хочется), в нем писать либо через HttpClient (если несколько разных запросов и асинхронность нужна), либо через HttpWebRequest.

Туториалов в инете миллион, главное учтите, что вам нужен код для .Net Framework 4.5 скорее всего (возможно ниже, не помню точно от чего версия зависит). Из нового вам будет попадаться код под .Net Core, .Net 5 / 6, хотя особых отличий там вроде не было.
...
Рейтинг: 0 / 0
SSIS и HTTP запрос
    #40127537
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael, Спасибо за наводку.
Я вот находил куски подсказок. Но пока не могу понять, тоесть этот компонент Script Task читает HTTP, а далее , в нём надо сохранять XML в файл или глобальную переменную или из него выводной поток можно куда то отдать, например компоненте работы с XML.
Эххх, мне бы пример готовый, наверняка кто такое пилил.
P.S. Жаль, что нет встроенных компонент HTTP request например в SSIS.

Edit the Script Task

At the top with the other using statements add using System.Net;
in Main use the following code snippet to make a GET request (Note: Change "https://somewhere.com/contacts/get" to your actual endpoint.)
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://somewhere.com/contacts/get");
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

using(HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using(Stream stream = response.GetResponseStream())
using(StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
...
Рейтинг: 0 / 0
SSIS и HTTP запрос
    #40127608
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed,

Скрипт может быть как отдельным компонентом, так и источником данных в потоке данных.
В первом случае можно записать ответ веб-сервиса в переменную, во втором - отправить на выход компонента.
...
Рейтинг: 0 / 0
SSIS и HTTP запрос
    #40127625
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael
нужен код для .Net Framework 4.5

Для SQL 2016 возможно использовать любую версию (по умолчанию 4.5). Однако при миграции на следующие версии SQL Server версия .Net Framework будет принудительно фиксирована: для 2017 - только 4.5, для 2019 - только 4.7. Не знаю, что будет на линуксовой SSIS (цитата "Only supports standard .NET Framework APIs"), но это, вероятно, не ваш случай.

По-хорошему, ответ XML надо распарсить в том же компоненте и отправить в табличном виде туда, где он нужен.
...
Рейтинг: 0 / 0
SSIS и HTTP запрос
    #40127674
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
medoed,

Скрипт может быть как отдельным компонентом, так и источником данных в потоке данных.
В первом случае можно записать ответ веб-сервиса в переменную, во втором - отправить на выход компонента.

Вы не внимательно прочитали пост. WebService нет, есть прямая ссылка http - которая отдает xml. C WebService -проблем нет, в SSIS есть для парсинга WebS - специальная компонента.
...
Рейтинг: 0 / 0
SSIS и HTTP запрос
    #40127722
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed
Критик
medoed,

Скрипт может быть как отдельным компонентом, так и источником данных в потоке данных.
В первом случае можно записать ответ веб-сервиса в переменную, во втором - отправить на выход компонента.

Вы не внимательно прочитали пост. WebService нет, есть прямая ссылка http - которая отдает xml. C WebService -проблем нет, в SSIS есть для парсинга WebS - специальная компонента.
Отдельного готового компонента - нет, но принцип тот же самый: вы отправляете web request на ваш урл, получаете response, извлекаете из него XML (ResponseBody, или как оно там называется) и дальше делаете с ним то, что вам нужно.

Я использовал Script Task в качестве dataflow source. В свойствах таска определяете столбцы для output dataflow, их типы, коллейшен и т.д. Внутри скрипта у вас появляется объект Output0Buffer, который вы заполняете своими данными, построчно. В редакторе датафлоу направляете ваш выхлоп в соотв. destination, мэппите столбцы как обычно, все.

Начать стоит отсюда: https://docs.microsoft.com/en-us/sql/integration-services/extending-packages-scripting-data-flow-script-component-types/creating-a-source-with-the-script-component

У меня просто не осталось того кода, который я писал 3 года назад. Я там использовал этот подход для выгрузки биллинговых данных из Ажура. Мне там кстати еще и постраничную вычитку пришлось делать, потому что ажур отдает не более 1000 записей в одном батче.
...
Рейтинг: 0 / 0
SSIS и HTTP запрос
    #40127742
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael,
Данке!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSIS и HTTP запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]