簡體   English   中英

在 C# 中使用 POST 方法和使用 WebClient 的請求正文從服務器接收數據

[英]Receive data from server using POST method and with a request body using WebClient in C#

我正在嘗試使用 POST 方法從服務器接收數據,並且請求應該有一個正文。 我為此使用 WebClient 並嘗試以字符串形式獲取響應。 我知道我們可以使用 HttpClient 來實現這一點。 但我想為這個特定的實例使用 WebClient。

我瀏覽了這篇文章並嘗試了UploadString並且響應給了我一個 400 BAD 請求。

using (var wc = new WebClient())
{
      wc.Headers.Add("Accept: application/json");
      wc.Headers.Add("User-Agent: xxxxxxx");
      wc.Headers.Add($"Authorization: Bearer {creds.APIKey.Trim()}");

      var jsonString = JsonConvert.SerializeObject(new UserRequestBody
      {
          group_id = userDetails.data.org_id
      });

      var response = wc.UploadString("https://api.xxxxx.yyy/v2/users", "POST", jsonString);
}

我使用 Postman 測試了端點(請求 header 具有 api 密鑰和 JSON 中的請求正文),它工作正常。 在此處輸入圖像描述

我知道我沒有正確格式化請求。 有人可以幫幫我嗎。

非常感謝@Santiago Hernández。 問題是使用wc.Headers.Add("Accept: application/json"); 在請求 header 中。 將其更改為wc.Headers.Add("Content-Type: application/json"); 返回 200 Ok 響應。 代碼修改如下

using (var wc = new WebClient())
{
      wc.Headers.Add("Content-Type: application/json");
      wc.Headers.Add("User-Agent: xxxxxxx");
      wc.Headers.Add($"Authorization: Bearer {creds.APIKey.Trim()}");

      var jsonString = JsonConvert.SerializeObject(new UserRequestBody
      {
          group_id = userDetails.data.org_id
      });

      var response = wc.UploadString("https://api.xxxxx.yyy/v2/users", "POST", jsonString);
}

Accept告訴服務器客戶端將接受的響應類型, Content-type是關於當前請求或響應的有效負載/內容。 如果請求沒有有效負載/正文,請不要使用Content-type

可以在此處找到有關此的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM