2014-02-16 2 views
7

Ich versuche herauszufinden, wie man HttpClient zu POST einige einfache Parameter verwenden.Wie kann ich diesen .NET RestSharp-Code in Microsoft.Net.Http HttpClient-Code konvertieren?

  • Email
  • Passwort

Ich habe dies mit RestSharp getan, aber ich versuche, dass die Migration aus.

Wie kann ich dies mit HttpClient, bitte?

Ich habe folgenden RestSharp Code

var restRequest = new RestRequest("account/authenticate", Method.POST); 
restRequest.AddParameter("Email", email); 
restRequest.AddParameter("Password", password); 

Wie kann ich das konvertieren zu verwenden, um die (Microsoft.Net.Http) HttpClient Klasse statt?

Beachten Sie: Ich bin ein

POST tun Auch dieses ist mit dem PCL-Montage.

Schließlich kann ich einen benutzerdefinierten Header hinzufügen. Sagen Sie: "ILikeTurtles", "true".

+2

Ihre beiden Fragen, bevor beantwortet wurden, finden Sie unter [.NET Httpclient. POST-Zeichenfolgenwert?] (Http://stackoverflow.com/questions/15176538/net-httpclient-how-to-post-string-value) und [Hinzufügen von HTTP-Kopfzeilen zu HttpClient (ASP.NET-Web-API)] (http://stackoverflow.com/questions/12022965/adding-http-headers-to-httpclient-asp-net-web-api). Versuchen Sie, die Suche zu verwenden. – CodeCaster

+0

... halte hier eine Sekunde. Gibt es wirklich ** drei ** "HttpClient" -Klassen? 'System.Net.Http.HttpClient',' Microsoft.Net.Http.HttpClient' und 'Windows.Web.Http.HttpClient'? Wirklich, Microsoft? "Ja wirklich?" – Charles

+0

Das ist eine wirklich gute Frage. Ich habe nur über 'Microsoft.Net.HttpClient' gelesen .. da sind wirklich -drei- ?? –

Antwort

9

Dieses es

var httpClient = new HttpClient(); 

httpClient.DefaultRequestHeaders.Add("ILikeTurtles", "true"); 

var parameters = new Dictionary<string, string>(); 
parameters["Email"] = "myemail"; 
parameters["Password"] = "password"; 

var result = await httpClient.PostAsync("http://www.example.com/", new FormUrlEncodedContent(parameters)); 
0

Dieser Code verwendet nicht HttpClient, aber es verwendet die System.Net.WebClient-Klasse, ich denke, es tut das Gleiche.

private static void Main(string[] args) 
    { 
     string uri = "http://www.example.com/"; 
     string email = "[email protected]"; 
     string password = "secret123"; 

     var client = new WebClient(); 

     // Adding custom headers 
     client.Headers.Add("ILikeTurtles", "true"); 

     // Adding values to the querystring 
     var query = HttpUtility.ParseQueryString(string.Empty); 
     query["email"] = email; 
     query["password"] = password; 
     string queryString = query.ToString(); 

     // Uploadstring does a POST request to the specified server 
     client.UploadString(uri, queryString); 
    } 
1

tun sollten, wenn Sie eine Bibliothek mit an sich so lange nicht dagegen sind, wie es HttpClient unter der Haube ist, ist Flurl eine weitere Alternative. [Disclaimer: Ich bin der Autor]

Dieses Szenario würde wie folgt aussehen:

var result = await "http://www.example.com" 
    .AppendPathSegment("account/authenticate") 
    .WithHeader("ILikeTurtles", "true") 
    .PostUrlEncodedAsync(new { Email = email, Password = password }); 
Verwandte Themen