【问题标题】:Difficulty with SendAsync HttpPost with header and body带有标题和正文的 SendAsync HttpPost 的困难
【发布时间】:2019-06-26 05:38:35
【问题描述】:

难以从 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": "xxxxxxxx-xxxxx-xxxx-xxxxxx-xxxxxxxxxxxx",
3. "tenantId": "xxxxxxxx-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,但这就是返回的内容:

"结果 {StatusCode: 302, ReasonPhrase: '', 版本: 1.1, 内容: System.Net.Http.StreamContent,标头:{ 内容安全策略: 默认src https:数据:'unsafe-inline''unsafe-eval'; 连接-src...."

【问题讨论】:

  • 302 响应是重定向。你得到Location 标头了吗?

标签: c# asp.net-web-api


【解决方案1】:

身份验证标头应如下...

new AuthenticationHeaderValue("Bearer", newBearerToken);

如果您使用的是不记名令牌,则不是“授权”

您当前的实现正在执行以下操作

授权:授权持有人 eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9

也从令牌中删除不记名

String newBearerToken = bearerToken;

【讨论】:

    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 2018-07-03
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2011-11-09
    相关资源
    最近更新 更多