Свернуть запрос к службам SSIS

Мы с моей командой пытаемся транскрибировать запрос cUrl в vbscirpt (или csharp), чтобы мы могли использовать его в сценарии SSIS. Задача импортировать файл в sql server 2014. попробуйте и заставьте работать пример кода. Ниже приведена инструкция cUrl:

set ID=80
set BeginDate=2019-01-01
set EndDate=2020-01-01
set APIKey=myAPIKey
set OutputPath=C:\Desktop\Output.json

curl https://Api.com/services/SomeReport/%ID%?q=report_begin_date=%BeginDate%:%EndDate% -u %APIKey%: > %OutputPath%e

То, что, кажется, убивает его каждый раз, — это часть авторизации. Есть примеры cUrl в vbscript, но они не касаются авторизации.

У кого-нибудь есть идеи?


person Chris    schedule 28.11.2019    source источник
comment
Возможный дубликат запроса CURL в классическом ASP (также относится к VBScript)< /я>.   -  person user692942    schedule 29.11.2019
comment
Это вопрос VBScript или нет? Если это не так, отредактируйте вопрос, потому что текущий принятый ответ не имеет смысла по отношению к VBScript.   -  person user692942    schedule 06.12.2019
comment
Основное решение проблемы авторизации находится в первой строке принятого ответа. Пример - это просто пример / руководство, не слишком зацикливайтесь на vbscript, который вы пропустили и нуждаетесь в вопросе. Предоставить совместимый с SSIS пример vbscript (или cscript) для репликации авторизации, используемой curl.   -  person vhoang    schedule 06.12.2019


Ответы (1)


Параметр -u curl добавляет «базовый» заголовок авторизации.

Эквивалент "-u %APIKey%:" с использованием HttpWebRequest (C#) будет примерно таким:

...
string username = myAPIKey;
string password = "";
string auth64 = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(username + ":" + password));

request.Headers.Add("Authorization", "Basic " + auth64);
...
person vhoang    schedule 28.11.2019
comment
Не похоже, что System.Text{} доступен в ssis. В любом случае, чтобы обойти ASCIIEncoding.ASCII.GetBytes? - person Chris; 28.11.2019
comment
Должен быть там. откройте #region Namespaces вверху задачи и добавьте с помощью System.Text;. GetBytes преобразует строку в массив байтов. Вы можете заменить его чем-то другим (UTF8Encoding и т. д., все еще в System.Text) или свернуть свою собственную функцию, но я не рекомендую этого делать. - person vhoang; 28.11.2019
comment
Я уже пытался добавить ссылку. Его почему-то нет в SSIS. Список ссылок переходит из System.Speech в System.Transactions. - person Chris; 28.11.2019
comment
Это ожидаемо. Вам не нужно добавлять его в качестве ссылки. Это часть Системы. Использование в пространствах имен просто для того, чтобы не печатать System.Text. Вы также можете использовать его таким образом System.Text.ASCIIEncoding.ASCII.GetBytes(). - person vhoang; 28.11.2019
comment
Это не решение VBScript, на самом деле оно больше похоже на .Net с использованием C#. Как вы можете принять это как ответ? @ Крис, вы либо используете VBScript в SSIS, либо нет, в любом случае исправьте вопрос, чтобы он соответствовал ответу, или отмените ответ, потому что он не имеет смысла в текущем контексте вопросов. - person user692942; 06.12.2019
comment
В: (или csharp). в любом случае, обновлено, чтобы избежать двусмысленности. - person vhoang; 06.12.2019
comment
Lankymart -- Вы правы. Я владею обоими языками и просто выбрал решение C Sharp, поскольку SSIS позволяет это сделать. Я исправил тег. - person Chris; 07.12.2019
comment
Вам действительно нужно делать это в службах SSIS? SSIS хорошо справляется с данными, но плохо работает с веб-сервисами. - person Nick.McDermaid; 19.10.2020