【问题标题】:Passing multiple scalar parameters to WebAPI via HttpClient.PostAsJsonAsync通过 HttpClient.PostAsJsonAsync 将多个标量参数传递给 WebAPI
【发布时间】:2013-03-13 16:36:48
【问题描述】:

这是我的方法:

[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'

提前致谢!

【问题讨论】:

    标签: c# asp.net-web-api


    【解决方案1】:

    我很确定您只能使用一个 [FromBody] 标签。尝试(添加您自己的错误处理等):

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

    如果表单主体实际上包含 a、b 和 c,这应该可以工作。

    【讨论】:

    • 谢谢,但它只是通过“a=6&b=5&c=2”发送整个字符串,并没有拆分变量。不回答问题。
    • 回答这个问题 - 不,你不能(用任何东西)调用你的函数,因为它总是会引发内部服务器错误。您不能有多个 [FromBody] 属性 - 因为 HTTP POST 只有一个正文,所以不需要它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2013-09-27
    • 1970-01-01
    • 2012-12-18
    • 2010-11-03
    • 1970-01-01
    • 2013-08-19
    相关资源
    最近更新 更多