C#.Net RestSharp客户端-传递身份验证令牌

时间:2018-06-26 22:03:27

标签: rest api restsharp

我正在使用RestSharp在C#.Net中编写REST客户端。有两个API调用-一个是“ Auth”调用,第二个是“ getKey”调用。 “ Auth”调用将在响应中返回“ Auth令牌”,我想从响应中解析该令牌,并将其作为标头传递给第二个“ getkey”调用。请举例说明

1 个答案:

答案 0 :(得分:0)

我提供了一些示例来实现您的方案。请使用以下示例并根据您的要求进行修改。

RestUtils类:

添加请求标头,如果需要您的应用程序一些其他标头。

 class RestUtils
    {
        private static readonly RestClient _restClient = new RestClient();

        public static void SetBaseURL(String host)
        {
            _restClient.BaseUrl = new Uri(host);
        }

        public static string GetResponse(String endpoint, String token)
        {
            var request = new RestRequest(endpoint, Method.GET);
            request.AddHeader("Accept", "application/json");
            request.AddHeader("Authorization", token);
            IRestResponse response = _restClient.Execute(request);
            return response.Content;
        }

        public static string GetToken(String endpoint)
        {
            var request = new RestRequest(endpoint, Method.GET);
            request.AddHeader("Accept", "application/json");
            IRestResponse response = _restClient.Execute(request);
            return response.Content;
        }
    }

TestClass:

在您的测试课程中,您可以添加以下步骤,并且可以获得预期的结果。将执行前两行,并将身份验证令牌作为输出。因此,您可以在后续行中将检索到的令牌用于其他API。换句话说,您可以创建一个属性类并设置检索到的令牌值。因此,您可以从各种类访问令牌。

        //Specify the Base URI of your Token Specific API
        RestUtils.SetBaseURL("https://login.microsoftonline.com/");
        //Specify the End Point of your Token Specific API
        String token = RestUtils.GetToken("/oauth2/token");

        //Specify the Base URI of your actual Test API
        RestUtils.SetBaseURL("XXXXXXX");
        String response = RestUtils.GetResponse(token);