Faire une requête Web HTTP POST en C#

Muhammad Maisam Abbas 16 février 2024
  1. Faire une requête Web HTTP POST avec la classe WebClient en C#
  2. Faire une requête Web HTTP POST avec la classe HttpWebRequest en C#
  3. Faire une requête Web HTTP POST avec la classe HttpClient en C#
Faire une requête Web HTTP POST en C#

Ce didacticiel abordera les méthodes permettant de créer une requête Web HTTP POST en C#.

Faire une requête Web HTTP POST avec la classe WebClient en C#

La classe WebClient fournit de nombreuses méthodes pour envoyer et recevoir des données depuis une URL en C#. On peut faire des requêtes HTTP POST en utilisant la fonction WebClient.UploadValues(url, values) de la classe WebClient en C#. L’exemple de code suivant nous montre comment faire une simple requête Web HTTP POST avec la classe WebClient en C#.

using System.Net;
using System.Collections.Specialized;

var wb = new WebClient() var data = new NameValueCollection();
string url = "www.example.com" data["username"] = "myUser";
data["password"] = "myPassword";

var response = wb.UploadValues(url, "POST", data);

Dans le code ci-dessus, nous créons le client web wb pour envoyer des données à l'url. Nous initialisons la variable data que nous voulons envoyer à url. Nous faisons la requête Web HTTP POST à l’url en spécifiant POST dans les paramètres de la fonction wb.UploadValues(url, "POST", data). La réponse de l’url est enregistrée dans la variable reponse.

Faire une requête Web HTTP POST avec la classe HttpWebRequest en C#

La classe HttpWebRequest fournit des méthodes pour interagir directement avec le serveur en utilisant le protocole HTTP en C#. Nous pouvons utiliser la propriété HttpWebRequest.Method =" POST " pour spécifier qu’une requête Web HTTP est une requête POST en C#. L’exemple de code suivant nous montre comment faire une simple requête web HTTP POST avec la classe HttpWebRequest en C#.

using System.Net;
using System.Text;
using System.IO;

string url = "http://www.example.com" var request = (HttpWebRequest)WebRequest.Create(url);

var postData = "username=" + Uri.EscapeDataString("myUser");
postData += "&password=" + Uri.EscapeDataString("myPassword");
var data = Encoding.ASCII.GetBytes(postData);

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

using (var stream = request.GetRequestStream()) {
  stream.Write(data, 0, data.Length);
}

var response = (HttpWebResponse)request.GetResponse();

Dans le code ci-dessus, nous avons créé la requête Web HTTP request à url. Nous avons précisé que la request est une requête POST avec la propriété request.Method = "POST". Nous avons initialisé les données postData que nous voulons envoyer à url avec la fonction Uri.EscapeDataString() et encodé les données en octets de la variable data. Nous spécifions la longueur des données que nous voulons envoyer à l’url avec la propriété request.ContentLength = data.Length. Au final, nous avons créé un stream et écrit des données en utilisant la fonction stream.Write(). Nous avons capturé la réponse de l’url avec la fonction request.GetResponse() et l’avons stockée dans l’objet response de classe HTTPWebResponse.

Faire une requête Web HTTP POST avec la classe HttpClient en C#

La classe HttpClient fournit des méthodes pour envoyer des requêtes HTTP et recevoir des réponses HTTP en C#. On peut faire une requête web HTTP POST avec la fonction HttpClient.PostAsync(url, data)url est l’URL, et les data sont les données que l’on veut envoyer à url. L’exemple de code suivant nous montre comment faire une simple requête HTTP POST avec la classe HttpClient.

using System.Net.Http;

readonly HttpClient client = new HttpClient();
var values =
    new Dictionary<string, string> { { "username", "myUser" }, { "password", "myPassword" } };

string url = "http://www.example.com" var data = new FormUrlEncodedContent(values);
var response = await client.PostAsync(url, data);

Dans le code ci-dessus, nous avons créé le client HTTP en lecture seule client et initialisé url. Nous avons stocké les données que nous voulons envoyer à url dans le dictionnaire values. Nous avons ensuite converti les values au type application/x-www-form-urlencoded avec la fonction FormUrlEncodedContent(). Au final, nous avons fait une requête web HTTP POST avec la fonction client.PostAsync(url, data) et stocké la réponse de la url dans la variable response.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn