2014-01-24 63 views
1

里面一个网页API控制器我有以下方法:如何从HttpClient将数组发布到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的数组到我的网页API控制器

+1

也许'new StringContent(JsonConvert.SerializeObject(new [] {1,2,3}));'? –

回答

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方法将其绑定到您的模型。

+0

+1我喜欢和JsonConvert一起工作。 – Shashank

1

我使用ServiceStack的JSON串行器/解串器,因为它们是当前的.Net性能冠军。从ServiceStack文档

任何列表,队列,堆栈,数组,集合,可枚举包括自定义枚举类型存储在完全相同的方式如JavaScript阵列字面

因此

int[] ids = [1,2,3,4]; 
var content = TypeSerializer.SerializeToString(new {IDs=ids}); 
相关问题