J'utilise System.Net.Http
J'ai trouvé plusieurs exemples sur le web. J'ai réussi à créer ce code pour faire un POST
demande :
public static string POST(string resource, string token)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(baseUri);
client.DefaultRequestHeaders.Add("token", token);
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("", "")
});
var result = client.PostAsync("", content).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
return resultContent;
}
}
tout fonctionne bien. Mais supposons que je veuille passer un troisième paramètre à la fonction POST
un paramètre appelé data
. Le paramètre de données est un objet comme celui-ci :
object data = new
{
name = "Foo",
category = "article"
};
comment puis-je faire cela sans créer le KeyValuePair
? Mon php RestAPI
attend une entrée json, donc le FormUrlEncodedContent
devrait envoyer le raw
json correctement. Mais comment puis-je faire cela avec Microsoft.Net.Http
? Merci.
0 votes
Si je comprends bien votre question, vous voulez envoyer un contenu JSON au lieu d'un contenu codé par formulaire (et par extension vous voulez que votre type anonyme soit sérialisé en JSON dans ce contenu) ?
0 votes
@CodingGorilla oui est un type anonyme.
4 votes
À titre d'avertissement pour les futurs lecteurs, n'utilisez pas de fichier
using
pour leHttpClient
. aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong2 votes
Note de Microsoft : pourquoi
using
ne doit pas être utilisé :HttpClient is intended to be instantiated once and reused throughout the life of an application. The following conditions can result in SocketException errors: Creating a new HttpClient instance per request. Server under heavy load. Creating a new HttpClient instance per request can exhaust the available sockets.
docs.microsoft.com/fr/aspnet/web-api/overview/advanced/0 votes
Note complémentaire :
.Result
se bloquera dans n'importe quel environnement qui a un contexte de synchronisation.