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 關注
- 556 瀏覽
添加回答
舉報