Restsharp请求参数语法问题

时间:2017-07-31 17:47:32

标签: c# django-rest-framework restsharp

这是请求数据的示例

{
    "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 \":[\"数据无效。期待一个   字典,但得到str。\"]},\" items \":[\"预期的项目列表但是   得到了类型\\" 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);

1 个答案:

答案 0 :(得分:2)

您目前使用格式错误的数据构建请求正文。

您目前拥有...shipping_data = "{ ",...,这只是一个字符串,因为在预期正确的对象模型或键/值对(字典)时会显示错误。

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中的例子有多接近