我總是從身體得到空值爲什麼? 我使用小提琴手沒有問題,但郵遞員失敗。發佈json數據在身體到web api
我有一個Web API,這樣的:
[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] string value)
{
string result = value;
}
我總是從身體得到空值爲什麼? 我使用小提琴手沒有問題,但郵遞員失敗。發佈json數據在身體到web api
我有一個Web API,這樣的:
[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] string value)
{
string result = value;
}
的WebAPI是按預期工作,因爲你告訴它,你可以發送此JSON對象:
{ "username":"admin", "password":"admin" }
然後你問它將其反序列化爲string
,這是不可能的,因爲它不是有效的JSON字符串。
解決方案1:
如果你想獲得實際的JSON作爲在value
值將是:
value = "{ \"username\":\"admin\", \"password\":\"admin\" }"
,那麼你需要設置請求的主體中的字符串郵遞員是:
"{ \"username\":\"admin\", \"password\":\"admin\" }"
解決方案2(我假設這是你想要的):
創建一個匹配JSON的C#對象,以便WebAPI可以正確地反序列化它。
首先創建一個你的JSON匹配類:
public class Credentials
{
[JsonProperty("username")]
public string Username { get; set; }
[JsonProperty("password")]
public string Password { get; set; }
}
在你的方法,然後使用此:
[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] Credentials credentials)
{
string username = credentials.Username;
string password = credentials.Password;
}
您正在發佈一個對象,並試圖將其綁定到一個串。 相反,創建一個類來表示數據:
public class Credentials
{
public string Username { get; set; }
public string Password { get; set; }
}
[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] Credentials value)
{
string result = value.Username;
}
不就是需要是'爲gettoken([FromBody]用戶名字符串,[ FromBody]字符串密碼)'?或者你期望'value'包含整個json字符串? – Andrei
我想以json字符串格式傳遞身體數據。我的代碼中有什麼問題? – Mennan