C# 如何将数组从HttpClient发布到web api控制器?
在web api控制器中,我有以下方法:C# 如何将数组从HttpClient发布到web api控制器?,c#,asp.net-web-api,C#,Asp.net Web Api,在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 r
[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[]id=/。。。
使用(var client=new HttpClient())
{
var content=//我不知道这里是什么。
var result=cli.PostAsync(“/api/Processor/Process”,content.).result;
字符串resultContent=result.Content.ReadAsStringAsync().result;
//子字符串(6),因为前导“}”,因此\n
var summary=JsonConvert.DeserializeObject(resultContent.Substring(6));
返回摘要;
}
我应该将内容设置为什么,以便将int数组传递给我的web api控制器您可以执行以下操作:
int[] ids = new[] {1,2,3,4};
var content = JsonConvert.SerializeObject(new {
IDs = ids
});
这将创建一个属性为IDs
的匿名对象,并将其转换为json。json将如下所示:
{
IDs: [1,2,3,4]
}
然后,web API方法将其绑定到您的模型。我使用的是的JSON序列化程序/反序列化程序,因为它们是当前的.Net性能冠军。从ServiceStack文档
任何列表、队列、堆栈、数组、集合、枚举(包括自定义枚举类型)的存储方式都与JavaScript数组文本的存储方式完全相同
所以
int[] ids = [1,2,3,4];
var content = TypeSerializer.SerializeToString(new {IDs=ids});
可能newstringcontent(JsonConvert.SerializeObject(new[]{1,2,3}))代码>?