难以从SendAsync获得针对HttpPost的200
响应。这是用于使用基本身份验证令牌的多阶段身份验证来获取承载令牌,该承载令牌然后用于获取accessKeyId和accessKeySecret,然后用于获取可用的accessToken。
这是预期的格式(由供应商提供)。我相信我编写的代码可以正确处理Header数据,但是我不确定正文。使用Restlet或Postman进行测试时,必须完全按照所示输入车身。我认为当将引号和标记值放在C#中时,引号在翻译中会丢失;请参阅本节下面的代码。
*************************来自供应商******************* **********
使用承载令牌,现在可以使用端点创建访问密钥
https://xxxxxxxxxxxx/x-keys`
a.POST请求:
一世。标头:
1.授权:承载eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9…。
2.内容类型:application / json
ii。身体:
1. {
2.“ userId”:“ xxxxxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxxx”,
3.“ tenantId”:“ xxxxxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxxx”
4.}
>String newBearerToken = "bearer " + bearerToken;
>var cl = new HttpClient();
>cl.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8");
>cl.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", newBearerToken);
>var nvc = new List<KeyValuePair<string, string>>();
>nvc.Add(new KeyValuePair<string, string>("\"" + "userId" + "\"", "\"" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "\""));
>nvc.Add(new KeyValuePair<string, string>("\"" + "tenantId" + "\"", "\"" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "\""));
>var req = new HttpRequestMessage(HttpMethod.Post, "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/-keys") { Content = new FormUrlEncodedContent(nvc) };
>var result = await cl.SendAsync(req);
我希望具有新访问令牌和200的HttpResponse的响应主体,但这是返回的内容:
“ result {状态代码:302,ReasonPhrase:”,版本:1.1,内容: System.Net.Http.StreamContent,标题:{Content-Security-Policy: default-src https:数据:'unsafe-inline''unsafe-eval'; connect-src ....“
答案 0 :(得分:0)
身份验证标头应为以下内容...
new AuthenticationHeaderValue("Bearer", newBearerToken);
如果使用的是承载令牌,则不是“授权”
您当前的实现正在执行以下操作
授权:授权载体 eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9
也从令牌中删除载体
String newBearerToken = bearerToken;