C# API-вызов для SSIS - PullRequest
       43

C# API-вызов для SSIS

0 голосов
/ 16 июня 2020

Я работаю над проектом API, извлекающим из API Rest с использованием SSIS. Это личный проект, и у меня нет возможности приобрести стороннее программное обеспечение.

Я работал с C#, чтобы извлечь из API, поскольку я знаю, что он способен на это, но У меня нет опыта C#, чтобы завершить sh это.

Может ли кто-нибудь помочь мне внести последние штрихи в код для выхода из API? Все переменные являются объектами, а переменная ExportDestination - это просто путь к файлу для экспорта.

Вот документы API, если они вам нужны: http://api.sc2replaystats.com/docs/index.html

Код:

#region Help:  
Introduction to the script task
#endregion

#region Namespaces
using System;
using System.Net;
using System.Text;
using System.IO;
#endregion

namespace ST_32488ae1d3e348ca83a1017e2e2bc39f
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : 
Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public string Authorization { get; private set; }
#region Help:  Using Integration Services variables and parameters in a script
#endregion
#region Help:  Firing Integration Services events from a script
#endregion
#region Help:  Using Integration Services connection managers in a script
#endregion
public void Main()
    {

        string errorLogPath = Dts.Variables["User::ErrorLog"].Value.ToString();
        // TODO: Add your code here
        try
        {

            string apiExportResponse = Dts.Variables["User::ExportDestination"].Value.ToString();

            string strResponse = SC2REPLAY("http://api.sc2replaystats.com/player/search");
            File.WriteAllText(apiExportResponse, strResponse);



        }
        catch (Exception ex)
        {
            ErrorLogging(ex, errorLogPath);
            Dts.Variables["User::APIReadFullResponse"].Value = ex.Message.ToString();

        }
        Dts.TaskResult = (int)ScriptResults.Success;
    }

    public string SC2REPLAY(string Config)
    {

        var request = (HttpWebRequest)WebRequest.Create(Config);
        var encoding = new UTF8Encoding();
        Authorization += "8c517814830a1d19d7b39c3c3a0ac65e914bbbaf;d54f614345505a473b8ed71665666251c3061460;1560313648";//The API token specific to your REDCap project (each token is unique to each user for each project)
        var postData = "&players_name=" + "PartinG";
        //postData += "&players_name=" + "PartinG";
        byte[] data = encoding.GetBytes(postData);

        request.Method = "POST";//Supported Request Method
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = data.Length;

        using (var stream = request.GetRequestStream())
        {
            stream.Write(data, 0, data.Length);
        }

        var response = (HttpWebResponse)request.GetResponse();
        Dts.Variables["User::APIReadResponseStatusCode"].Value = response.StatusCode;
        Dts.Variables["User::APIReadFullResponse"].Value = response.StatusDescription.ToString();


        return new StreamReader(response.GetResponseStream()).ReadToEnd();

    }

    public static void ErrorLogging(Exception ex, string errorLogPath)
    {

        string errorLog = errorLogPath + DateTime.Today.ToString("MM-dd-yyyy");



        if (!File.Exists(errorLogPath))
        {
            File.Create(errorLogPath).Dispose();
        }
        using (StreamWriter sw = File.AppendText(errorLogPath))
        {
            sw.WriteLine("=============Error Logging ===========");
            sw.WriteLine("===========Start============= " + DateTime.Now);
            sw.WriteLine("Error Message: " + ex.Message);
            sw.WriteLine("Stack Trace: " + ex.StackTrace);
            sw.WriteLine("===========End============= " + DateTime.Now);
            sw.Flush();
            sw.Close();
        }
    }


#region ScriptResults declaration
enum ScriptResults
    {
        Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
        Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
    };
    #endregion

}
}

Отредактировано, чтобы включить ошибку:

=============Error Logging ===========
===========Start============= 6/16/2020 12:42:09 PM
Error Message: The remote server returned an error: (401) Unauthorized.
Stack Trace:    at System.Net.HttpWebRequest.GetResponse()
at ST_32488ae1d3e348ca83a1017e2e2bc39f.ScriptMain.SC2REPLAY(String Config)
at ST_32488ae1d3e348ca83a1017e2e2bc39f.ScriptMain.Main()
===========End============= 6/16/2020 12:42:09 PM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...