繁体   English   中英

Http post 在 Postman 中有效,但在带有 HttpClient 的 C# 中无效

[英]Http post works in Postman but not in C# with HttpClient

如果我通过 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调用之前?

而不是new { id = object.Id }.ToString()你需要做

JsonConvert.SerializeObject(new { id = object.Id })

new { id = 77 }.ToString()这样的代码会产生"{ id = 77 }" ,而不是"{ id: "77" }"

在类似的情况下,我将地址从http://...更改为https://...并解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM