首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有字符串参数的WebApi POST方法始终为空

带有字符串参数的WebApi POST方法始终为空
EN

Stack Overflow用户
提问于 2018-04-25 07:22:59
回答 2查看 1.8K关注 0票数 1

我的WebApi中有一个POST方法,它以json作为参数。

代码语言:javascript
复制
[HttpPost]  
public HttpResponseMessage GetOrderDataBySessionId([FromBody] string json)

我试着用URL:localhost:56934/api/Home/GetOrderDataBySessionId用RestClient点击它

并在正文中指定以下json字符串:

代码语言:javascript
复制
{
  "ListSessionId": [
    "180416073256DGQR10",
    "180416091511DGQR10"
  ]
}

将主体/内容类型设置为application/json.但是当它击中我的方法时,json字符串参数总是为null。

是因为我需要在参数中使用复杂类型吗?

我们不能用字符串输入吗?

EN

回答 2

Stack Overflow用户

发布于 2018-04-25 07:27:59

通过发送以下内容:

代码语言:javascript
复制
{
  "ListSessionId": [
    "180416073256DGQR10",
    "180416091511DGQR10"
  ]
}

您正在发送一个JSON,该JSON的类型为字符串数组,因此您的Web操作应该是:

代码语言:javascript
复制
public HttpResponseMessage GetOrderDataBySessionId([FromBody] List<string> listSessionId)

只需将string json更改为List<string> listSessionId即可。

票数 2
EN

Stack Overflow用户

发布于 2021-03-19 09:57:26

我已经解决了这个问题。

客户端代码:

代码语言:javascript
复制
$.ajax({
            url: "/api",
            type: "post",
            data: "p1=1&p2=2"
        });

服务器中的代码:

代码语言:javascript
复制
[HttpPost]
public string Post([FromForm] string p1, [FromForm] string p2)
{
    return p1+p2;
}

有三个要点:

  1. 在客户机和服务器中,参数名称必须是相同的。
  2. 在客户机中,参数前面必须有[FromForm]而不是[FromBody]
  3. 您甚至可以添加多个参数,但参数名称必须对应。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50016324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档