最佳答案
我试图从一个 c # WPF 桌面应用程序执行一个 Post to my WebAPI。
不管我做什么,我都明白
{“ error”: “ unsupport _ Grant _ type”}
这就是我所尝试的(我已经尝试了所有我能找到的东西) :
另外,当前用于测试的 dev web api 是: 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");
那次失败后,我上网搜索了一下:
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 成功打电话。
更新 Fiddler 结果
有没有人可以帮我打一个成功的电话到上面的网络应用程序接口..。 请让我知道,如果我可以帮助澄清。 谢谢!