私は.net Consoleapp
からトークンベアラ認証をリモートのWebApi
に接続しようとしています。C#このリクエストで認可が拒否されました
私のプログラムが成功したトークンを返すという事実にもかかわらず、私のPostAsync
方法で私は、次のメッセージが出ます:
を「認可は、この要求のために拒否された」
私のコード
hHttpClient client = new HttpClient();
client.BaseAddress = new Uri(URL);
HttpContent Content = new StringContent(string.Format("grant_type=password&username={0}&password={1}",
HttpUtility.UrlEncode(ApiLoginUsername),
HttpUtility.UrlEncode(ApiLoginPassword)), Encoding.UTF8,
"application/x-www-form-urlencoded");
HttpResponseMessage response = client.PostAsync("/api/login", Content).Result;
string resultJSON = response.Content.ReadAsStringAsync().Result;
result = JsonConvert.DeserializeObject<LoginTokenResult>(resultJSON);
これまでのコードではトークンを返して結果に格納します
次の部分は、と次のようん:私は
HttpContent TestContent = new StringContent(string.Format("Authorization","Bearer"+ result.AccessToken,"application/json"));
var Product = client.PostAsync("/api/Report",TestContent).Result;----> This is where it says Authorization denied
var test = Product.Content.ReadAsStringAsync().Result;
return result;
は、なぜ私がメッセージ「認可は、この要求のために拒否された」test
に取得していますいくつかのデータをretriveしようとしています受信したトークンで 私のコードに何か重要なものがありませんか?あなたのコードで
string uri = "/api/Report";
string token = "<token here>";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("<base address>");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, uri);
request.Headers.Add("Authorization", string.Format("bearer {0}", token);
HttpResponseMessage response = client.SendAsync(request).Result;
あなたはそれがリクエストヘッダにあるべき文字列のコンテンツとして認証宣伝文を投稿しようとしている:任意の助けをいただければ幸いです
これにはいくつかの理由がありますが、私は、 "Bearer"と 'result.AccessToken'の間にスペースがないためです。 –
@Kirkは素早い返答を感謝しますが、あなたの提案ではありませんでした –
Authorization/Bearerはリクエストヘッダーです。 –