C# 在URL中放置JWT访问令牌的位置

C# 在URL中放置JWT访问令牌的位置,c#,json,ssis,jwt,C#,Json,Ssis,Jwt,我想在chrome浏览器上查看JSON数据集,但收到以下消息: 根据我的研究,看起来我需要在后端发送对令牌的访问,以便访问URL和读取数据。如何使用SSIS C#发送JWT访问令牌 以下是我目前掌握的代码: #region Namespaces using System; using System.Data; using Microsoft.SqlServer.Dts.Pipeline.Wrapper; using Microsoft.SqlServer.Dts.Runtime.Wra

我想在chrome浏览器上查看JSON数据集,但收到以下消息:

根据我的研究,看起来我需要在后端发送对令牌的访问,以便访问URL和读取数据。如何使用SSIS C#发送JWT访问令牌

以下是我目前掌握的代码:

#region Namespaces

using System;

using System.Data;

using Microsoft.SqlServer.Dts.Pipeline.Wrapper;

using Microsoft.SqlServer.Dts.Runtime.Wrapper;

using System.Net;

using Microsoft.SqlServer.Dts.Runtime;

using System.IO;

using System.Runtime.Serialization.Json;

using System.Runtime.Serialization;

using System.Collections.Generic;

using System.Text;

using System.Linq;

using System.Net.Http;
using System.Net.Http.Headers;



#endregion


#region Class



[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]

public class ScriptMain : UserComponent

{


    #region Methods



    /// <summary>Outputs records to the output buffer</summary>

    public override void CreateNewOutputRows()

    {


        //Set Webservice URL
        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        string wUrl = Variables.URL;

        try

        {



            //Call getWebServiceResult to return our Article attributes

            List<Payment> outPutResponse = GetWebServiceResult(wUrl);


            if (outPutResponse != null)

            {


              

                foreach (Payment py in outPutResponse) 

                {

                    //Output main attributes of Article

                    Output0Buffer.AddRow();



                    Output0Buffer.column = DateTime.Parse(py.column);
                   


                }

            }

        }

        catch (Exception e)

        {

            FailComponent(e.ToString());

        }


    }


    /// <summary>

    /// Method to return our list articles

    /// </summary>

    /// <param name="wUrl">The web service URL to call</param>

    /// <returns>An object that contains a list of Articles</returns>



    private List<Payment> GetWebServiceResult(string wUrl)

    {

        //var client = new RestClient(wUrl);
        //var request = new RestRequest(Method.GET);
        //request.AddHeader("content-type", "application/json");
        //request.AddHeader("authorization", "Bearer ACCESS_TOKEN");
        //IRestResponse response = client.Execute(request);


        HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(wUrl);

        // Add an Accept header for JSON format.    

        httpWReq.Headers.Add(HttpRequestHeader.Authorization, "Bearer " +
            "Authorization Code Here");




        httpWReq.Method = "GET";

        httpWReq.ContentType = "application/json";

        HttpWebResponse httpWResp = (HttpWebResponse)httpWReq.GetResponse();



        List<Payment> jsonResponse = null;


        try

        {
            Stream responseStream = httpWResp.GetResponseStream();

            /*  //Get the stream of JSON
              Stream dataStream = null;
              StreamReader reader = null;

              string responseFromServer = null;

              // Get the stream containing content returned by the server.
              dataStream = httpWResp.GetResponseStream();
              // Open the stream using a StreamReader for easy access.
              reader = new StreamReader(dataStream);
              // Read the content.
              responseFromServer = reader.ReadToEnd();
              */


            //Deserialize the JSON stream

            using (StreamReader reader = new StreamReader(responseStream))

            {
                //Deserialize our JSON

                DataContractJsonSerializer sr = new DataContractJsonSerializer(typeof(List<Payment>));

                jsonResponse = (List<Payment>)sr.ReadObject(responseStream);

            }

        }

        //Output JSON parsing error

        catch (Exception e)

        {

            FailComponent(e.ToString());

        }

        return jsonResponse;


    }


    /// <summary>

    /// Outputs error message

    /// </summary>

    /// <param name="errorMsg">Full error text</param>

    private void FailComponent(string errorMsg)

    {

        bool fail = false;

        IDTSComponentMetaData100 compMetadata = this.ComponentMetaData;

        compMetadata.FireError(1, "Error Getting Data From Webservice!", errorMsg, "", 0, out fail);


    }

    #endregion

}

#endregion
#区域名称空间
使用制度;
使用系统数据;
使用Microsoft.SqlServer.Dts.Pipeline.Wrapper;
使用Microsoft.SqlServer.Dts.Runtime.Wrapper;
Net系统;
使用Microsoft.SqlServer.Dts.Runtime;
使用System.IO;
使用System.Runtime.Serialization.Json;
使用System.Runtime.Serialization;
使用System.Collections.Generic;
使用系统文本;
使用System.Linq;
使用System.Net.Http;
使用System.Net.Http.Header;
#端区
#区域类
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
公共类ScriptMain:UserComponent
{
#区域方法
///将记录输出到输出缓冲区
公共覆盖无效CreateNewOutputRows()
{
//设置Web服务URL
ServicePointManager.Expect100Continue=true;
ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12;
字符串wUrl=Variables.URL;
尝试
{
//调用getWebServiceResult返回文章属性
List outPutResponse=GetWebServiceResult(wUrl);
if(outPutResponse!=null)
{
foreach(在outPutResponse中支付py)
{
//输出文章的主要属性
Output0Buffer.AddRow();
Output0Buffer.column=DateTime.Parse(py.column);
}
}
}
捕获(例外e)
{
FailComponent(例如ToString());
}
}
/// 
///方法返回我们的列表项目
/// 
///要调用的web服务URL
///包含项目列表的对象
私有列表GetWebServiceResult(字符串wUrl)
{
//var客户端=新的RestClient(wUrl);
//var请求=新的重新请求(Method.GET);
//AddHeader(“内容类型”、“应用程序/json”);
//请求.AddHeader(“授权”、“承载访问令牌”);
//IRestResponse response=client.Execute(请求);
HttpWebRequest httpWReq=(HttpWebRequest)WebRequest.Create(wUrl);
//为JSON格式添加Accept标头。
添加(HttpRequestHeader.Authorization,“承载人”+
“此处的授权代码”);
httpWReq.Method=“GET”;
httpWReq.ContentType=“应用程序/json”;
HttpWebResponse httpWResp=(HttpWebResponse)httpWReq.GetResponse();
List jsonResponse=null;
尝试
{
Stream responseStream=httpWResp.GetResponseStream();
/*//获取JSON的流
流数据流=null;
StreamReader=null;
字符串responseFromServer=null;
//获取包含服务器返回的内容的流。
dataStream=httpWResp.GetResponseStream();
//使用StreamReader打开流以便于访问。
reader=新的StreamReader(数据流);
//阅读内容。
responseFromServer=reader.ReadToEnd();
*/
//反序列化JSON流
使用(StreamReader=新StreamReader(responseStream))
{
//反序列化我们的JSON
DataContractJsonSerializer sr=新的DataContractJsonSerializer(类型(列表));
jsonResponse=(List)sr.ReadObject(responseStream);
}
}
//输出JSON解析错误
捕获(例外e)
{
FailComponent(例如ToString());
}
返回jsonResponse;
}
/// 
///输出错误消息
/// 
///完整错误文本
专用无效组件(字符串错误消息)
{
布尔失败=错误;
IDTSComponentMetaData100 compMetadata=this.ComponentMetaData;
compMetadata.FireError(1,“从Webservice获取数据时出错!”,errorMsg“”,0,输出失败);
}
#端区
}
#端区
非常感谢您的帮助

绒毛 绒毛 绒毛
Fluff

谢谢大家对这个问题的帮助

答案如下:

 private List<FacultyList> GetWebServiceResultJWT(string wUrl)
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    string serverBaseAddress = wUrl.Substring(0, 42);
    var accessToken = "your token";

    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Clear();
        client.BaseAddress = new Uri(serverBaseAddress);

        var contentType = new MediaTypeWithQualityHeaderValue("application/json");
        client.DefaultRequestHeaders.Accept.Add(contentType);

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);



        HttpResponseMessage message = client.GetAsync(wUrl.Substring(wUrl.Length - 48, 48)).Result;

        if (message.IsSuccessStatusCode)
        {
            string inter = message.Content.ReadAsStringAsync().Result.ToString();

            Payment result = JsonConvert.DeserializeObject<Payment>(inter);
            List<FacultyList> facultyList = result.facultyList.Cast<FacultyList>().ToList();
            return facultyList; // return type should be List<facultyList>


        }



        return null;
    }

    /* string accessToken = "yourtoken"; // or your JWT Token

     var request = new HttpRequestMessage(HttpMethod.Get, wUrl);
     request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 

     HttpClient client = new HttpClient();
     HttpResponseMessage response = client.SendAsync(request).Result; 
     return null;
}





private void FailComponent(string errorMsg)

{

    bool fail = false;

    IDTSComponentMetaData100 compMetadata = this.ComponentMetaData;

    compMetadata.FireError(1, "Error Getting Data From Webservice!", errorMsg, "", 0, out fail);


}
私有列表GetWebServiceResultJWT(字符串wUrl)
{
ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12;
字符串serverBaseAddress=wUrl.Substring(0,42);
var accessToken=“您的令牌”;
使用(var client=new HttpClient())
{
client.DefaultRequestHeaders.Clear();
client.BaseAddress=新Uri(serverBaseAddress);
var contentType=新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
client.DefaultRequestHeaders.Accept.Add(contentType);
client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“承载者”,accessToken);
HttpResponseMessage=client.GetAsync(wUrl.Substring(wUrl.Length-48,48)).Result;
if(消息。IsSuccessStatusCode)
{
字符串inter=message.Content.ReadAsStringAsync().Result.ToString();
支付结果=JsonConvert.DeserializeObject(inter);
List facultyList=result.facultyList.Cast().ToList();
return facultyList;//返回类型应为List
}
返回null;
}
/*string accessToken=“yourtoken”;//或您的JWT令牌
var request=newhttprequestmessage(HttpMethod.Get,wUrl);
request.Headers.Authorization=新的AuthenticationHeaderValue(“承载者”,accessToken);
HttpClient=新的HttpClient();
HttpResponseMessage response=client.SendAsync(request.Result);
返回null;
}
专用无效组件(字符串错误消息)
{
布尔失败=错误;
IDTSCom