2013-03-13 33 views
2

這裏是我的方法:通過HttpClient.PostAsJsonAsync傳遞多個標量參數的WebAPI

[HttpPost] 
[ActionName("TestString")] 
public string TestString([FromBody] int a, [FromBody] int b, [FromBody] int c) 
{ 
    return "test " + a + " " + b + " " + c; 
} 

有沒有我可以調用使用HttpClient.PostAsJsonAsync

這個方法我試過這樣任何方式:

HttpResponseMessage response = client.PostAsJsonAsync("api/task/TestString","a=8,b=5,c=6").Result;

但我得到這個錯誤:StatusCode: 500, ReasonPhrase: 'Internal Server Error'

提前致謝!

回答

2

我很確定你只有一個[FromBody]標籤。嘗試(添加自己的錯誤處理等):

[HttpPost] 
[ActionName("TestString")] 
public string TestString([FromBody] dynamic body) 
{ 
    return "test " + body.a.ToString() + " " + body.b.ToString() + " " + body.c.ToString(); 
} 

這應該工作,只要form body實際上包含a,b和c。

+0

謝謝,但它只是通過「a = 6&b = 5&c = 2」 發送整個字符串,並且不會分出變量。不回答這個問題。 – MattBH 2013-03-13 08:59:48

+1

回答這個問題 - 不,你不能調用你的函數(用任何東西),因爲它總是會拋出一個內部服務器錯誤。你不能有多個[FromBody]屬性 - 它不是必需的,因爲HTTP POST只有一個主體。 – 2013-03-13 09:52:04