Я пытаюсь выполнить Сообщение к своему WebAPI от c# WPF настольное приложение.
Независимо от того, что я делаю, я добираюсь
{"ошибка": "unsupported_grant_type"}
Это - то, что я попробовал (и я попробовал все, что я мог найти):
Также веб-API dev, в настоящее время активный для тестирования: http://studiodev.biz/
основа http объект клиента:
var client = new HttpClient()
client.BaseAddress = new Uri("http://studiodev.biz/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
со следующим отправляют методы:
var response = await client.PostAsJsonAsync("token", "{'grant_type'='password'&'username'='username'&'password'='password'");
var response = await client.PostAsJsonAsync("token", "grant_type=password&username=username&password=password");
После этого отказавший, я сделал некоторый поиск с помощью Google и попробовал:
LoginModel data = new LoginModel(username, password);
string json = JsonConvert.SerializeObject(data);
await client.PostAsync("token", new JsonContent(json));
тот же результат, таким образом, я попробовал:
req.Content = new StringContent(json, Encoding.UTF8, "application/x-www-form-urlencoded");
await client.SendAsync(req).ContinueWith(respTask =>
{
Application.Current.Dispatcher.Invoke(new Action(() => { label.Content = respTask.Result.ToString(); }));
});
Примечание: Я могу выполнить успешный вызов с Chrome.
Обновите результат скрипача
Мог кто-то помогать мне выполнить успешный вызов к вышеупомянутому веб-API... Сообщите мне, могу ли я помочь разъясниться.Спасибо!!
Имел те же проблемы, но только разрешил мой по защищенному HTTP для маркерного URL. Посмотрите образец httpclient код. Обычный HTTP просто прекращает работать после обслуживания сервера
var apiUrl = "https://appdomain.com/token"
var client = new HttpClient();
client.Timeout = new TimeSpan(1, 0, 0);
var loginData = new Dictionary<string, string>
{
{"UserName", model.UserName},
{"Password", model.Password},
{"grant_type", "password"}
};
var content = new FormUrlEncodedContent(loginData);
var response = client.PostAsync(apiUrl, content).Result;