212 votes

.NET HttpClient. Comment poster une valeur de chaîne?

Comment créer avec C # et HttpClient la requête POST suivante: entrez la description de l'image ici

J'ai besoin d'une telle demande pour mon service API Web:

 [ActionName("exist")]
[System.Web.Mvc.HttpPost]
public bool CheckIfUserExist([FromBody] string login)
{           
    bool result = _membershipProvider.CheckIfExist(login);
    return result;
}
 

Merci d'avance!

492voto

Darin Dimitrov Points 528142
using System;
using System.Collections.Generic;
using System.Net.Http;

class Program
{
    static void Main()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:6740");
            var content = new FormUrlEncodedContent(new[] 
            {
                new KeyValuePair<string, string>("", "login")
            });
            var result = client.PostAsync("/api/Membership/exists", content).Result;
            string resultContent = result.Content.ReadAsStringAsync().Result;
            Console.WriteLine(resultContent);
        }
    }
}

41voto

Cuong Le Points 29324

Vous trouverez ci-dessous un exemple d’appel synchrone, mais vous pouvez facilement passer en mode async à l’aide de wait-sync:

 var pairs = new List<KeyValuePair<string, string>>
            {
                new KeyValuePair<string, string>("login", "abc")
            };

var content = new FormUrlEncodedContent(pairs);

var client = new HttpClient {BaseAddress = new Uri("http://localhost:6740")};

    // call sync
var response = client.PostAsync("/api/membership/exist", content).Result; 
if (response.IsSuccessStatusCode)
{
}
 

2voto

Axel Martinez Points 134

Tu pourrais faire quelque chose comme ça

 HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:6740/api/Membership/exist");

req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";         
req.ContentLength = 6;

StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd();
streamIn.Close();
 

Et puis strReponse devrait contenir les valeurs retournées par votre webservice

0voto

kirbycope Points 48

Je pensais que je ferais remarquer que using () disposera du HttpClient. Causé moi un peu de frustration car vous devez garder le HttpClient dans un cours ou votre session se terminera après la fin de la première fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X