1
我想在現有的API上發表一些請求。授權標頭httpclient後異常Base64
我試圖在Chrome上使用插件Postman使用該API,並且它工作得很好。
現在我必須從我的Windows Phone應用程序在C#中進行這些調用。
正如你看到它的工作原理。
現在,這裏是我使用的HttpClient最初試圖做的在C#:
(當然實例化_httpClient和BaseAdress在構造函數的I)
this._httpClient.DefaultRequestHeaders.Accept.Clear();
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("client_id:client_secret");
var encodedAuth = System.Convert.ToBase64String(plainTextBytes);
this._httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(encodedAuth);
var formContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials")
});
var res = await _httpClient.PostAsync("/oauth/token", formContent);
它不會工作,我得到了一個FormatException。
然後我看了一下互聯網,發現了一些答案,人們說我應該使用常規頭文件並手動添加它,所以這就是我所做的。
this._httpClient.DefaultRequestHeaders.Accept.Clear();
this._httpClient.DefaultRequestHeaders.Add("Authorization", "Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=");
var formContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials")
});
var res = await _httpClient.PostAsync("/oauth/token", formContent);
我得到同樣的異常。
標題授權實際上是client_id:在Base64中編碼的client_secret,這是該API的一個要求。
所以,如果有人可以提供一些幫助,會是不錯的:)
謝謝您的閱讀和幫助。 Guillaume。