【发布时间】: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