appel httpclient à webapi pour publier des données qui ne fonctionnent pas

J’ai besoin de faire un simple appel webapi pour poster une méthode avec un argument de chaîne.

Vous trouverez ci-dessous le code que j’essaie, mais lorsque le point d’arrêt est atteint avec la méthode webapi, la valeur reçue est null .

 SsortingngContent ssortingngContent = new System.Net.Http.SsortingngContent("{ \"firstName\": \"John\" }", System.Text.Encoding.UTF8, "application/json"); HttpClient client = new HttpClient(); HttpResponseMessage response = await client.PostAsync(url.ToSsortingng(), ssortingngContent); 

et code côté serveur:

  // POST api/values [HttpPost] public void Post([FromBody]ssortingng value) { } 

aidez s’il vous plaît …

Si vous souhaitez envoyer un fichier json à votre API Web, la meilleure option consiste à utiliser une fonctionnalité de liaison de modèle et à utiliser une classe au lieu d’une chaîne.

Créer un modèle

 public class MyModel { [JsonProperty("firstName")] public ssortingng FirstName { get; set; } } 

Si vous n’utilisez pas l’atsortingbut JsonProperty, vous pouvez écrire une propriété en minuscule camel, comme ceci

 public class MyModel { public ssortingng firstName { get; set; } } 

Puis changez votre action, changez le type de paramètre en MyModel

 [HttpPost] public void Post([FromBody]MyModel value) { //value.FirstName } 

Vous pouvez créer automatiquement des classes C # à l’aide de Visual Studio. Regardez cette réponse ici. Désérialiser JSON en object C #

J’ai fait ce code de test suivant

Contrôleur d’API Web et modèle de vue

 using System.Web.Http; using Newtonsoft.Json; namespace WebApplication3.Controllers { public class ValuesController : ApiController { [HttpPost] public ssortingng Post([FromBody]MyModel value) { return value.FirstName.ToUpper(); } } public class MyModel { [JsonProperty("firstName")] public ssortingng FirstName { get; set; } } } 

Application client de console

 using System; using System.Net.Http; namespace Temp { public class Program { public static void Main(ssortingng[] args) { Console.WriteLine("Enter to continue"); Console.ReadLine(); DoIt(); Console.ReadLine(); } private static async void DoIt() { using (var ssortingngContent = new SsortingngContent("{ \"firstName\": \"John\" }", System.Text.Encoding.UTF8, "application/json")) using (var client = new HttpClient()) { try { var response = await client.PostAsync("http://localhost:52042/api/values", ssortingngContent); var result = await response.Content.ReadAsSsortingngAsync(); Console.WriteLine(result); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); Console.ResetColor(); } } } } } 

Sortie

 Enter to continue "JOHN" 

Sortie de code