簡體   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