2 回答
TA贡献2037条经验 获得超6个赞
在前者中,您将请求正文编码为x-www-form-urlencoded,而在后者中,您将请求正文编码为application/json. 相同的动作不能同时响应两者。由于参数装饰有[FromBody],application/json是您应该使用的参数,这就是 powershell 命令起作用的原因。
如果您确实需要 x-www-form-urlencoded,请删除该[FromBody]属性。如果您确实需要同时支持两者,则需要两条单独的路线:
private Reservation PostCore(Reservation res)
{
// do something
}
[HttpPost("json")]
public Reservation PostJson([FromBody] Reservation res) => PostCore(res);
[HttpPost("")]
public Reservation PostForm(Reservation res) => PostCore(res);
TA贡献1796条经验 获得超4个赞
您的 POST 代码中有两个问题,首先我在评论中提到,克里斯在他的回答中提到。
第二个是您如何生成请求的正文,使用如下内容:
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://url");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "{\"user\":\"test\"," +
"\"password\":\"bla\"}";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
取自此anwser 的代码
您还可以使用Json.Net序列化您的预订(如果所有字段名称和类型匹配)
- 2 回答
- 0 关注
- 473 浏览
添加回答
举报