Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数组从HttpClient发布到web api控制器?_C#_Asp.net Web Api - Fatal编程技术网

C# 如何将数组从HttpClient发布到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

在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[]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}))