[英]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.