Restsharp请求参数语法问题
Restsharp request parameter syntax issue
这是请求数据的例子
{
"delivery_needed": "false",
"merchant_id": "201",
"merchant_order_id": "123456",
"amount_cents": "25000",
"currency": "USD",
"items": [],
"shipping_data": {
"name": "test_user",
"street": "sample street",
"city": "cairo",
}
}
我写了 c# 代码,但运输数据和项目的语法似乎有错误。
这是我得到的错误
{\"shipping_data\":{\"non_field_errors\":[\"Invalid data. Expected a
dictionary, but got str.\"]},\"items\":[\"Expected a list of items but
got type \"str\".\"]}
这是我写的c#代码,语法搞糊涂了
var client = new RestClient("url");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", request.AddJsonBody(new { delivery_needed = "false", merchant_id = "201", merchant_order_id = "123456", amount_cents = "25000", currency = "USD", items = "[]", shipping_data = "{ ", name = "test_user", street = "sample street", city = "Cairo"}), ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
您当前使用格式错误的数据构建请求正文。
您当前有 ...shipping_data = "{ ",...
这只是一个字符串,当它期望正确的对象模型或 key/value 对(字典)时指示的错误。
items
根据错误信息也没有正确提供。它需要一个数组,但它又提供了一个字符串 "[]"
您需要正确构建模型
var model = new {
delivery_needed = "false",
merchant_id = "201",
merchant_order_id = "123456",
amount_cents = "25000",
currency = "USD",
items = new object[0], //<--This needs to be an array
shipping_data = new { //<--This needs to be a proper object
name = "test_user",
street = "sample street",
city = "Cairo"
}
};
var client = new RestClient("url");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddJsonBody(model); //<-- this will serialize and add the model as a JSON body.
IRestResponse response = client.Execute(request);
注意要解析为请求正文的模型的构造。看看它与 OP
中的示例有多相似
这是请求数据的例子
{
"delivery_needed": "false",
"merchant_id": "201",
"merchant_order_id": "123456",
"amount_cents": "25000",
"currency": "USD",
"items": [],
"shipping_data": {
"name": "test_user",
"street": "sample street",
"city": "cairo",
}
}
我写了 c# 代码,但运输数据和项目的语法似乎有错误。
这是我得到的错误
{\"shipping_data\":{\"non_field_errors\":[\"Invalid data. Expected a dictionary, but got str.\"]},\"items\":[\"Expected a list of items but got type \"str\".\"]}
这是我写的c#代码,语法搞糊涂了
var client = new RestClient("url");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", request.AddJsonBody(new { delivery_needed = "false", merchant_id = "201", merchant_order_id = "123456", amount_cents = "25000", currency = "USD", items = "[]", shipping_data = "{ ", name = "test_user", street = "sample street", city = "Cairo"}), ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
您当前使用格式错误的数据构建请求正文。
您当前有 ...shipping_data = "{ ",...
这只是一个字符串,当它期望正确的对象模型或 key/value 对(字典)时指示的错误。
items
根据错误信息也没有正确提供。它需要一个数组,但它又提供了一个字符串 "[]"
您需要正确构建模型
var model = new {
delivery_needed = "false",
merchant_id = "201",
merchant_order_id = "123456",
amount_cents = "25000",
currency = "USD",
items = new object[0], //<--This needs to be an array
shipping_data = new { //<--This needs to be a proper object
name = "test_user",
street = "sample street",
city = "Cairo"
}
};
var client = new RestClient("url");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddJsonBody(model); //<-- this will serialize and add the model as a JSON body.
IRestResponse response = client.Execute(request);
注意要解析为请求正文的模型的构造。看看它与 OP
中的示例有多相似