我有一个使用访问令牌/承载身份验证在测试中运行良好的web api。我使用HttpClient进行身份验证和发出请求。容易。
这是基本的Web客户端设置。基地址是我在转移到生产时更改的常量。
public static HttpClient GetClient()
{
HttpClient Client = new HttpClient();
Client.BaseAddress = new Uri(Ics2Constants.ICS2APIBaseAddress);
Client.DefaultRequestHeaders.Accept.Clear();
Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return Client;
}
我构建了令牌请求登录信息,如下所示:
var values = new Dictionary<string, string>();
values.Add("grant_type", "password");
values.Add("username", "niceUser");
values.Add("password", "NiCePaSsWord");
var loginContent = new FormUrlEncodedContent(values);
然后我发出了访问令牌的请求:
var loginResponse = await client.PostAsync("/Token", loginContent);
在测试模式下,完美。我可以获取访问令牌,并在后续请求中将其传回。一切都很好。
当我转向生产时。我对访问令牌的请求收到了错误的请求400。我确实有基本地址,因为如果我取消了authorize属性,我可以恢复数据。
生产中访问令牌的请求有所不同,但我不知道要改变什么。
答案 0 :(得分:0)
嗯,答案最终分为两部分:
1)Web主机问题。他们结束了腐败。
2)在他们解决问题之后我仍然收到了404(未找到)......所以我不得不在PostAsync中取出“/”。所以新行看起来像这样:
var loginResponse = await client.PostAsync("Token", loginContent);
它使用“/”在本地调试中工作,但是生产方不满意。
我现在正在工作。 :)