我正在编写一个API,它将通过邮件接收UTF-16编码的数据字符串,这实际上是XML。我遇到的问题是控制器方法签名中的data参数为null。第一个参数,它是API密钥就好了。我已经阅读了Stack Overflow上的每个问题/答案,我可以找到,以及其他几个来源,但无济于事。
这是我的控制器方法:
[HttpPost]
public string PostEmployeeData(string key, [FromBody]string data)
{
return "Emp data posted";
}
非常感谢任何帮助。
答案 0 :(得分:1)
如果您想获取身体的原始内容,您可以这样做:
[HttpPost]
public string PostEmployeeData(string key)
{
var data = Request.Content.ReadAsStringAsync().Result;
return "Emp data posted";
}
要将其作为输入参数,数据必须是具有相应Content-Type
集的有效格式。有关详细信息,请参阅this post。
通过正确实施async
和await
,可以进一步改善这一点,但这并不重要。
答案 1 :(得分:0)
要在Postman中执行此操作,您需要设置标题标签:
内容类型 = application / x-www-form-urlencoded
在 Body 标签上选择原始选项,并以 = 符号开头写下您的值,例如:
=mydata
此变量将是您的操作定义中的 data 变量。
答案 2 :(得分:0)
我最终解决了这个问题:
var bodyStream = new StreamReader(HttpContext.Current.Request.InputStream);
bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
var bodyText = bodyStream.ReadToEnd();
感谢joshhendo向我提供了我需要向这个方向前进的信息。