【问题标题】:WEB API 1 - Pass JSON ARRAY from .NET CLIENTWEB API 1 - 从 .NET CLIENT 传递 JSON ARRAY
【发布时间】:2015-08-26 15:44:15
【问题描述】:

我正在尝试创建一个接受类对象数组的 WEB API 控制器(服务方法)。

还有一个 .NET 客户端,它调用此 API 方法并传递 JSON 字符串(类对象数组)。问题是我无法在服务器端接收 json 数组内容。似乎有一些序列化/反序列化错误,但我无法发现。示例代码如下:

C#类如下:

public class UserData
{
    public int ID { get; set; }
    public DateTime DATETIME { get; set; }
    public int SEQUENCE { get; set; }
}

然后是WEB API方法(API控制器如下)

[HttpPost()]
public HttpResponseMessage Post([FromBody()]
IEnumerable<@UserData> RequestBody)
{


}

Json 数组如下

[
    {
        "ID": 1,
        "DATE": "2014-01-01",
        "SEQUENCE": 533
    },
    {
        "ID": 2,
        "DATE": "2015-01-01",
        "SEQUENCE": 3233
    },
    {
        "ID": 3,
        "DATE": "2015-01-01",
        "SEQUENCE": 233
    }
]

.NET 客户端如下:

public void CallService(string jsonString)
{
    try {

        var client = new RestClient(GetBaseURLService());
        var requestRest = new RestRequest("event ", Method.POST);
        var RequestBody = TextBoxCreateEventJson.Text;
        requestRest.AddBody(jsonString);
        requestRest.RequestFormat = DataFormat.Json;
        var res = client.Execute(requestRest);


    } catch (Exception ex) {

    }
}

然后我在 RequestBody 中得到 null/nothing。

我知道在调用 requestRest.AddBody(jsonString); 之前我需要做一些事情

但不确定是什么?

【问题讨论】:

  • 您的问题含糊不清。你的RequestBody 怎么了?什么都不是?您的代码中实际上不起作用的地方。
  • 在您提供的代码示例中,您甚至没有在任何地方使用 RequestBody 变量。
  • 糟糕:我正在尝试将 JSON 数组传递给 Web 方法。因此,由于 RequestBody 是 IEnumerable RequestBody 类型的参数,所以我期待三行,但我得到的只是空集合。
  • 您在请求正文中使用 jsonString 参数的值,而不是 RequestBody 变量的内容。你检查过jsonString的内容吗?

标签: c# .net asp.net-web-api restsharp


【解决方案1】:

System.Web.Helpers 命名空间中,有一个Json 类,您可以使用它来编码或解码。对于你的情况,

string jsonString = Json.Encode(your array as an argument)

在您的请求正文中使用 jsonString。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多