Я нахожусь на Xamarin и хотел бы выполнить HTML-запрос для сбора токена с сервера, которым я управляю.Я могу успешно выполнить следующий запрос на PostMan. Но как только я пытаюсь закодировать его, это не работает.Я пробовал два разных способа.Во-первых, используя HTTPClient следующим образом:
HttpClient client = new HttpClient();
string url = AppConfiguration.CloudServer_URI + "/token";
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // define the expected return format
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "/token");
request.Content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "password"),
new KeyValuePair<string, string>("username", "admin@example.com"),
new KeyValuePair<string, string>("password", "Admin@123465")
});
var response = await client.SendAsync(request);
Это дает мне хороший ответ, но с 400 - Плохой запрос.Я не могу найти в HTTPResponse, где я могу получить подробности в теле ответа.Но я настоятельно приветствую это «ошибка»: «unsupported_grant_type».
Затем я попробовал другой способ с RestSharp и получил следующую реализацию:
string URL = AppConfiguration.CloudServer_URI + "/token";
var client = new RestClient(URL);
var request = new RestRequest(Method.GET);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("grant_type", "password", ParameterType.RequestBody);
request.AddParameter("username", "admin@example.com", ParameterType.RequestBody);
request.AddParameter("password", "Admin@123465", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Но опять результат тот же- ошибка 400, неверный запрос.И здесь я вижу тело ответа "error": "unsupported_grant_type".
У меня такое чувство, что я упускаю что-то очевидное, но я не вижу, что.