Search code examples
c#selenium-webdriverrestsharp

RestSharp - C#: result is null and response JSON has validation errors - username and password are null


When debugged result is null and response giving username and Password as null inspite of passing them, can someone please help me

    public static string GetAccessToken()
    {
        var options = new RestClient("https://example.com");
        IAuthenticator auth = new HttpBasicAuthenticator("username", "password");
        //var client = new RestClient(options);
        var request = new RestRequest("/api/w1/Auth", Method.Post);
        request.AddHeader("content-type", "application/json");
        request.AddParameter("application/json", "{ \"grant_type\":\"client_credentials\" }", ParameterType.RequestBody);
        var responseJson = options.Execute(request).Content;
        //var result = JsonConvert.DeserializeObject<Dictionary<string, object>>(responseJson)["access_token"].ToString();
        var result = JsonConvert.DeserializeObject<dynamic>(responseJson);
        var token = result.access_token;
        return token;
    }

Expecting access token.


Solution

  • Use this code:

     var options = new RestClient("https://example.com");
     var request = new RestRequest("/api/v1/Auth", Method.Post); \\ <--- v1
     request.AddJsonBody(new
     {
         username = "Username",
         password = "YourPassword"
     }); \\ <-- no extra headers, easier life
     
     var responseJson = options.Execute(request).Content;
     var result = JsonConvert.DeserializeObject<dynamic>(responseJson);
     var token = result.access_token;