0

我正在编写一个 API,它将通过 post 接收 UTF-16 编码的数据字符串,该字符串实际上是 XML。我遇到的问题是控制器方法签名中的数据参数为空。第一个参数,即 API 密钥就可以了。我已经阅读了我能找到的关于 Stack Overflow 的所有问题/答案,以及其他几个来源,但均无济于事。

这是我的控制器方法:

[HttpPost]
public string PostEmployeeData(string key, [FromBody]string data)
{            
    return "Emp data posted";
}

这是我的 Postman chrome 插件设置的截图: 在此处输入图像描述

任何帮助是极大的赞赏。

4

3 回答 3

1

如果您正在寻找身体的原始内容,您可以这样做:

    [HttpPost]
    public string PostEmployeeData(string key)
    {
        var data = Request.Content.ReadAsStringAsync().Result;
        return "Emp data posted";
    }

要将其作为输入参数,数据必须是具有适当Content-Type设置的有效格式。有关更多信息,请参阅此帖子

async通过正确实施and可以进一步改进这一点await,但这不是必需的。

于 2015-09-21T23:14:23.167 回答
0

我最终像这样解决了这个问题:

var bodyStream = new StreamReader(HttpContext.Current.Request.InputStream);
bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
var bodyText = bodyStream.ReadToEnd();

感谢 joshhendo 为我提供了朝着这个方向前进所需的信息。

于 2015-09-24T13:48:23.643 回答
0

要在 Postman 中执行此操作,您需要在Headers选项卡上进行设置:

内容类型=应用程序/x-www-form-urlencoded

Body选项卡上选择Raw选项并以=符号开头写入您的值,例如:

=mydata

此变量将是您的操作定义中的数据变量。

于 2015-09-21T22:47:37.527 回答