【问题标题】:Add authorization permanent token header to POST JSON using HttpClient in REST API使用 REST API 中的 HttpClient 将授权永久令牌标头添加到 POST JSON
【发布时间】:2017-09-26 18:11:49
【问题描述】:

我正在尝试使用永久令牌授权发布带有HhttpClient 的 JSON,但我总是收到错误 401 Unauthorized code:

public static async Task<Uri> CrearitemAsync(Item item)
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri(BaseUri);
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Authorization =
            new AuthenticationHeaderValue("OAuth", AuthToken);
        HttpResponseMessage response = await client.PostAsJsonAsync(
            "items/" + IdProvider, JsonConvert.SerializeObject(item));
        response.EnsureSuccessStatusCode();
        return response.Headers.Location;
    }
}

我也试过这个:

client.DefaultRequestHeaders.Add("Authorization", "Bearer " + AuthToken);

令牌似乎没问题。它是一个全小写的字母数字字符串。这是使用永久令牌的正确方法吗?

update 我必须用于标题的键是:IDENTITY_KEY 但仍然失败

【问题讨论】:

  • 没有直接关系,但you are using HttpClient wrong.
  • 不要手动序列化项目 (JsonConvert.SerializeObject)。只需将 item 传递给 PostAsJsonAsync。 (或使用 StringContentJsonConvert.SerializeObject)手动完成
  • 似乎是 Cory 指出的重复,但我仍然不确定这是否是使用永久令牌的正确方法,感谢 cmets
  • 我必须使用的标题键是:IDENTITY_KEY 但仍然是错误 401

标签: c# json post httpclient access-token


【解决方案1】:

最后它与 Add.. 一起使用了。必须在标头中使用这个“密钥”值而不是授权:

client.DefaultRequestHeaders.Add("IDENTITY_KEY", AuthToken);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-11
    • 2021-07-22
    • 2013-09-03
    • 2021-02-19
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多