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.
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; } }
[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
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; } } }
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(); } } } } }
Enter to continue "JOHN"