HTTPWebRequest - GetResponse () - принудительно закрывается удаленным хостом в сценарии SSIS C# - PullRequest
0 голосов
/ 10 февраля 2020

Я создал решение REST API в компоненте сценария SSIS, используя C#, который выбирает запись набора данных из Oracle, изменяет набор записей в формат JSON и отправляет его в конечную точку REST Web API. Теперь, когда я запускаю код; выдает ошибку "Connection forcibly closed by the remote host" в методе GetResponse (). Пожалуйста, смотрите ниже мой код:

#endregion

#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.IO;
using System.Net;
using Newtonsoft.Json.Serialization;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;

#endregion

public class ScriptMain : UserComponent
{
    String jsonStr = null;
    int rowNumber = 0;
    private static string _uploadUrl = "https://mycloud.integration.cloud.com:5501/STAGING_PUBLISH/1.0/create";

    private dynamic _sfResult;
    private static string output;

    public override void PreExecute()
    {
        base.PreExecute();
        /*
         * Add your code here
         */
    }

    public override void PostExecute()
    {
        base.PostExecute();
        CreateNewOutputRows();
    }

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        string jsonStr = @"{""DataIn"": { ""client_id"": ""100001""
                                        , ""first_name"": ""Test""
                                        , ""last_name"": ""User1""
                                        , ""mobile_phone"": ""411111111""
                                        , ""current_status"": ""Yes""},
                            ""ExternalID"" : ""100001"",
                            ""System"" : ""Import"" }";
        //json 
        ProcessJson(jsonStr);
    }

    public void ProcessJson(String VarStr)    {
        if (VarStr.ToString() != "")
        {
            HttpWebRequest httpWebRequest = HttpWebRequest.CreateHttp(_uploadUrl); 
            httpWebRequest.ContentType = "application/json; charset=utf-8";
            httpWebRequest.Method = "POST";
            //var newStream = httpWebRequest.GetRequestStream();

            httpWebRequest.Accept = "application/json; charset=utf-8";
            httpWebRequest.Headers.Add("Authorization", "Basic " + "SVNUU1NJU0NSTUFkbWluc0B1bmlzYS5lZHUuYXU6WEJ1dk5iNVpIbg==");

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                streamWriter.Write(jsonStr);
                body = body + VarStr;
                streamWriter.Flush();
            }

            //httpWebRequest.KeepAlive = false;
            httpWebRequest.ServicePoint.ConnectionLimit = 1;
            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); // <<------  FAILS HERE

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var responseText = streamReader.ReadToEnd();
                Console.WriteLine(responseText);
            }
        }
    }

    public override void CreateNewOutputRows()
    {
        base.CreateNewOutputRows();

    }
}

Буду очень признателен, если кто-нибудь сможет мне помочь с этим Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...