读取帖子数据时出现异常。 我在这条线上出现错误:
HttpContext.Current.Request.Form["UserID"].ToString();
错误是:
System.Collections.Specialized.NameValueCollection.this [string] .get 返回null。
在方法中,我输入了以下代码:
StreamReader reader = new StreamReader(HttpContext.Current.Request.InputStream);
string requestFromPost = reader.ReadToEnd();
数据像这样正确地输入:
{
"UserID": "1000",
"Password": "ABCD"
}
为什么我在这个HttpContext.Current.Request.Form["UserID"].ToString()
中没有获得价值?我也尝试了Request.QueryString但在这里没有成功。
我在哪里做错了?任何帮助或建议将不胜感激。谢谢!
答案 0 :(得分:3)
此请求上没有Form
。要将请求正文解释为表单数据,它必须:
x-www-form-urlencoded
UserID=foo&Password=bar
JSON内容是JSON,不会被解释为表单数据。
Web API应该已经为您解决了这一问题。给定一种操作方法:
public void Action(Credentials credentials)
其中Credentials
类如下所示:
public class Credentials
{
string UserID { get; set;}
string Password { get; set; }
}
您无需执行任何其他操作即可使框架将传入的JSON数据转换为Credentials
的实例并将其传递给action方法。这是自动的,除非您做了一些奇怪的事情而违反了WebAPI期望的约定。