Je reçois toujours une valeur nulle du corps pourquoi? Je n'ai aucun problème avec l'utilisation du violoneux mais le facteur est un échec.
J'ai une API web comme ça:
[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] string value)
{
string result = value;
}
WebAPI fonctionne comme prévu car vous lui dites que vous envoyez cet objet json:
{ "username":"admin", "password":"admin" }
Ensuite, vous lui demandez de le désérialiser en tant que string
, ce qui est impossible car ce n'est pas une chaîne JSON valide.
Solution 1:
Si vous souhaitez recevoir le JSON réel comme dans la valeur de value
sera:
value = "{ \"username\":\"admin\", \"password\":\"admin\" }"
alors la chaîne dont vous avez besoin pour définir le corps de la demande dans postman est:
"{ \"username\":\"admin\", \"password\":\"admin\" }"
Solution 2 (je suppose que c'est ce que vous voulez):
Créez un objet C # qui correspond au JSON afin que WebAPI puisse le désérialiser correctement.
Créez d'abord une classe qui correspond à votre JSON:
public class Credentials
{
[JsonProperty("username")]
public string Username { get; set; }
[JsonProperty("password")]
public string Password { get; set; }
}
Ensuite, dans votre méthode, utilisez ceci:
[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] Credentials credentials)
{
string username = credentials.Username;
string password = credentials.Password;
}
Vous publiez un objet et essayez de le lier à une chaîne. À la place, créez un type pour représenter ces données:
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;
}