繁体   English   中英

将 Bodyparameter 添加到 POST 请求(C# 和 RestSharp)

[英]Adding Bodyparameter to POST request (C# and RestSharp)

我对编程很陌生,我打算向 Taxdoo APi 发出帖子请求。我使用的是最新版本的 RestSharp。 我尝试阅读他们的文档,但缺乏示例代码让我作为初学者在角落里哭泣。 这是问题所在:

API 需要一组具有以下有效负载格式的产品:

{
  "products": [
    {
      "description": "Couch Supreme red",
      "productIdentifier": "redcouch123",
      "commodityCode": "9394240000",
      "purchasePrice": 3200,
      "currency": "EUR"
    },
    {
      "description": "Wood table",
      "productIdentifier": "wt234bas",
      "commodityCode": "9394220000",
      "purchasePrice": 300,
      "currency": "EUR"
    }
  ]
}

我如何才能将产品:放入请求中? 我尝试了 request.AddParameter、request.AddOrUpdateParameter,我尝试让 RestSharp 使用 request.AddJsonBody 进行解析,但我迷路了。 我每次都收到 BadRequest 错误。

到目前为止我的代码:

namespace ConnectToApi
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var endpoint = new Uri("https://sandbox-api.taxdoo.com/products");
            using (RestClient? restClient = new(endpoint))
            {
                var request = new RestRequest();
                var authToken = ConfigurationManager.AppSettings["authToken"];
                request.AddHeader("AuthToken", authToken);
                      
                MyProduct productOne = new MyProduct
                {
                    Description = "Product 1",
                    ProductIdentifier = "GBP-120",
                    CommodityCode = "123456",
                    PurchasePrice = 40,
                    Currency = "USD"
                };
                MyProduct productTwo = new MyProduct
                {
                    Description = "Product 2",
                    ProductIdentifier = "GBP-125",
                    CommodityCode = "789101112",
                    PurchasePrice = 20,
                    Currency = "USD"
                };
                
                List<MyProduct> productList = new();
                productList.Add(productOne);
                productList.Add(productTwo);
                
                string json = JsonConvert.SerializeObject(productList,Formatting.Indented);
                request.AddStringBody(json, DataFormat.Json);
                var response = restClient.Execute(request);
            }
        }
    }

JSONString 看起来像这样:

[
  {
    "description": "Product 1",
    "productIdentifier": "GBP-120",
    "commodityCode": "123456",
    "purchasePrice": 40,
    "currency": "USD"
  },
  {
    "description": "Product 2",
    "productIdentifier": "GBP-125",
    "commodityCode": "789101112",
    "purchasePrice": 20,
    "currency": "USD"
  }
]

如果有人可以帮助我或向我发送适合初学者的资源,我将非常高兴。 干杯伙计们。

您不需要序列化,只需包装 class:

public class Body
{
    public List<MyProduct> Products { get; set; }
}
...
var body = new Body();
body.Products = productList;
request.AddStringBody(body, DataFormat.Json);

在序列化之前,您需要在列表周围添加一个产品。 并将 Post 添加到您的请求中。 例如,您可以使用匿名 class

var request = new RestRequest(endpoint, Method.POST);

....

var products = new { Products = productList};
 string json = JsonConvert.SerializeObject(products);
 request.AddStringBody(json, DataFormat.Json);
 var response = restClient.Execute(request);

暂无
暂无

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

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