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。