-
-
Save vpetkovic/d187517793ea5521fb46be406ec3bf38 to your computer and use it in GitHub Desktop.
using RestSharp; | |
using System.Net; | |
using System.Net.Http; | |
public static void useRestSharp(string url) | |
{ | |
var client = new RestClient(url); | |
var request = new RestRequest(Method.POST); | |
request.AddHeader("Content-Type", "application/json"); | |
request.AddParameter("undefined", APIRequest(), ParameterType.RequestBody); | |
IRestResponse response = client.Execute(request); | |
Console.WriteLine(response.Content); | |
} | |
public static async void useHTTPClient(string url) | |
{ | |
var httpClient = new HttpClient(); | |
var request = httpClient.PostAsync(url, new StringContent(APIRequest(), Encoding.UTF8, "application/json")).Result; | |
var content = await request.Content.ReadAsStringAsync(); | |
Console.WriteLine(content); | |
} | |
public static void useWebClient(string url) | |
{ | |
var webClient = new WebClient(); | |
webClient.Headers[HttpRequestHeader.ContentType] = "application/json"; | |
var response = webClient.UploadString(url, APIRequest()); | |
Console.WriteLine(response); | |
} | |
// Could be serialized JSON object using json.net or newtonsoft.json | |
public static string APIRequest() | |
{ | |
string source = @"C:\Users\vpetkovic\Desktop\NH example.txt"; | |
dynamic obj = new ExpandoObject(); | |
obj.username = "data"; | |
obj.password = "data"; | |
obj.fileName = Path.GetFileName(source); | |
obj.file = Convert.ToBase64String(File.ReadAllBytes(source)); | |
string apiRequest = "{\r\n \"username\": \"" + obj.username + "\",\r\n \"password\": \"" + obj.password + "\",\r\n \"fileName\": \"" + obj.fileName + "\",\r\n \"file\": \"" + obj.file + "\"\r\n}"; | |
return apiRequest; | |
} |
Hi there! Sorry for late reply.
I am not using Auth0 but based on their documentation found here, you can see how to get token based on the authorization flow you are using. You can see what each flow returns as a response, and in a context of your example above response would be stored in
Content: System.Net.Http.HttpConnectionResponseContent
Now you want to deserialize that json response. To achieve that you can use any json (de)serializer but I think using using HttpClient extensions methods in this sense would be the simplest.
You can install it using package manager console Install-Package System.Net.Http.Json
and reference it in using
statement. Then you will need to replace line 23 with
var response = await request.Content.ReadFromJsonAsync<TokenResponse>();
where TokenResponse
is your expected response object
public class TokenResponse
{
// Other properties removed for brevity
public string access_token { get; set; }
}
To further simplify future requests you can install IdentityModel
package Install-Package IdentityModel
and then store retrieved access token like so:
httpClient.SetBearerToken(response.access_token);
Note that this gist is an example for using clients in very short lived console applications hence the class is static
, for simplest and quickest of testing. Otherwise, if your use case is different then I suggest you to use IHttpClientFactory to implement resilient HTTP requests
Hey! thanks a lot, you helped me too much! Hugs from Chile
Glad I could help 🙂
Hey, How are you? i write you because i'm looking for a solution of a problem that i have been had since a couple of weeks:
I've been looking for solutions to get the Token provide by Auth0 in c# .net core, but we can not use RestClient, we have to use HttpClient, but when i send a post request to get the token, i get this response:
Could you help me to find the token in this response when i send a post request to get my token?, or better, how should i get the token?
Thanks a lot!