在web api控制器中,我有以下方法:
[HttpPost]
public ProcessResultDto Process(int[] IDs)
{
}
我无法更改该签名或dll或任何内容。
我必须创建一个调用该方法的可执行文件。
这是我到目前为止的大致内容:
int[] ids = //...
using (var client = new HttpClient())
{
var content = // I don't know what goes here.
var result = cli.PostAsync("/api/Processor/Process", content).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
// Substring(6) because of leading )]}',\n
var summary = JsonConvert.DeserializeObject<ProcessResultDto>(resultContent.Substring(6));
return summary;
}
我如何设置内容以便将int数组传递给我的web api控制器
答案 0 :(得分:1)
您可以执行以下操作:
int[] ids = new[] {1,2,3,4};
var content = JsonConvert.SerializeObject(new {
IDs = ids
});
这将创建一个属性为IDs
的匿名对象,并将其转换为json。 json看起来像:
{
IDs: [1,2,3,4]
}
然后,Web API方法会将其绑定到您的模型。
答案 1 :(得分:1)
我使用ServiceStack的JSON序列化器/解串器,因为它们是当前的.Net性能冠军。来自ServiceStack文档
任何列表,队列,堆栈,数组,集合,包含自定义可枚举类型的枚举都以与JavaScript数组文字完全相同的方式存储
因此
int[] ids = [1,2,3,4];
var content = TypeSerializer.SerializeToString(new {IDs=ids});