【问题标题】:c# postasync returns unauthorizedc# postasync 返回未经授权的
【发布时间】:2022-01-06 21:04:47
【问题描述】:

我有以下代码。它返回一个401 Unauthorized,尽管它在 PostMan 上完美运行。

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", string.Format("Bearer {0}", token));

var data1 = new { fName = "Sam", lName = "F" };
var result = await client.PostAsync(url, new StringContent(data1.ToString(), Encoding.UTF8, "application/json"));

var response = result.ToString();

上面的代码有什么问题?

【问题讨论】:

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


    【解决方案1】:

    开始添加出现在 Postman 中的标头,逐一添加到您的请求中。 其中一个或多个是您所缺少的。

    您还可以使用Fiddler 来验证您认为您的请求的样子,以及它实际上的样子。

    【讨论】:

    • @Captan 实际上是禁止返回的。
    【解决方案2】:

    你可以试试这个

    var contentType = new MediaTypeWithQualityHeaderValue("application/json");
    client.DefaultRequestHeaders.Accept.Add(contentType);
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    var json = JsonConvert.SerializeObject(data1);
    var contentData = new StringContent(json, Encoding.UTF8, "application/json");
    var response = await client.PostAsync(url,contentData);
    

    如果它不起作用,那么你的角色有问题。您的 API 也必须具有角色授权,而不仅仅是令牌。

    【讨论】:

    • 我更新了问题,错误是403 forbidden
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2018-11-05
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    相关资源
    最近更新 更多