私はASP.NET Web APIにc#でアクセスしようとしています。私はAPIを書いて、それにアクセスして、Postmanを使って有効な応答を得ることができました。 username
,password
、およびgrant_type = password
と表示されている場合、APIはaccess_tokenおよびrefresh_tokenを返します。ここでPostAsJsonAyncのunsupported_grant_type
はポストマンを使用しているとき、私は受信応答の画面キャプチャです:
しかし、私がしようとすると、次のC#コードを使用する場合:
var userToValidate = new UserToValidate
{
UserName = "[email protected]",
Password = "Abc123!",
grant_type = "password"
};
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:4321");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync("oauth/token", userToValidate).Result;
content = response.Content.ReadAsStringAsync().Result;
}
を私はエラーを取得します... {"error":"unsupported_grant_type"}
私はこのチュートリアルのC#側で何か間違っていなければなりませんngs。私は何が欠けていますか?
P.S. async
コードをデバッグすると、ここで
私はこのSOの投稿に解決策を見つけました。 http://stackoverflow.com/questions/29246908/c-sharp-unsupported-grant-type-when-calling-web-api JSONの代わりに 'application/x-www-form-urlencoded'を使わなければなりません。 – webworm
また、PostDataを、UserToValidateクラスの代わりにKeyValuePairとして渡すことができます。 'List> postData = new List >(); postData.Add(新しいKeyValuePair <文字列、文字列>( "grant_type"、 "password"));postData.Add(新しいKeyValuePair <文字列、文字列>( "username"、userName));postData.Add(新しいKeyValuePair <文字列、文字列>( "パスワード"、パスワード)); ' –
Paresh
@Paresh - あなたはそれを回答として投稿できますか?私はそれを受け入れます。そうすれば、複数のオプションがあります。ありがとう。 – webworm