【发布时间】:2025-12-15 21:10:01
【问题描述】:
如果我通过 Postman 发布了 Http (Https) 帖子,一切正常。但是,如果我在 .NET 核心中使用 HttpClient 尝试相同的帖子,它将无法正常工作,似乎授权失败或类似的事情,因为 response.StatusCode 没问题,但如果我阅读内容字符串,我会得到一个带有 404 的 HTML 页面它问我是否想登录。
当然,我已经检查了地址等明显的东西,并尝试了不同的令牌(它们总是在邮递员中工作)。我还尝试了添加 Bearer 令牌的不同版本:
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
这是目前的代码:
client.BaseAddress = new Uri("www.baseaddress.de");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
var content = new StringContent(JsonConvert.SerializeObject(new { id = object.Id }), Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync($"/address", content);
身体:
我也尝试过失眠,它在那里也很有效。也许邮递员在其标题中做了一些我不知道的事情? postman 和 HttpClient 之间的共同区别是什么?有没有人对我可以做什么或尝试找出错误有任何其他建议?
编辑:
通过在基地址后面添加/ 并在调用前面删除它来修复它:
client.BaseAddress = new Uri("www.baseaddress.de/");
HttpResponseMessage response = await client.PostAsync($"address", content);
也许有人知道为什么基地址末尾需要/,为什么我不能把它放在API调用之前?
【问题讨论】:
-
证书有效吗?
-
是的。我刚刚又检查了一遍。
-
使用 Postman 的代码生成器查看原始 HTTP 请求并将其与您在 c# 中所做的比较。检查您的 BaseAddress 是否以斜杠
/结尾 -
我现在感觉很愚蠢,但是在将
/添加到基地址并在地址之前删除/之后它可以工作。 ...为什么我必须在我的基地址后添加斜杠,而不能在“/address”之类的.PostAsync方法中使用它?请添加您的评论作为答案,我会接受。非常感谢。 -
我找到了这种问题的原因,通过fiddler捕获并比较了postman请求与HttpClient请求。也许这可以给你一个线索。
标签: c# asp.net-core http-post postman dotnet-httpclient