【发布时间】:2015-01-20 23:57:23
【问题描述】:
我正在尝试在现有 API 上发出一些发布请求。
我尝试使用 Chrome 上的 Postman 插件来使用该 API,它运行良好。
现在我必须在 c# 中从我的 windows phone 应用程序拨打这些电话。
如您所见,它有效。
现在这是我最初尝试在 C# 中使用 HttpClient 做的事情:
(我当然在Ctor中实例化了_httpClient和BaseAdress)
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);
我遇到了同样的异常。
标头 Authorization 实际上是 client_id:client_secret 以 Base64 编码,这是该 API 的要求。
所以如果有人能提供一些帮助那就太好了:)
感谢您的阅读和帮助。 纪尧姆。
【问题讨论】:
标签: c# post header base64 httpclient