10

I'm trying to figure out how to use HttpClient to POST some simple parameters.

  • Email
  • Password

I've been doing this with RestSharp, but I'm trying to migrate off that.

How can I do this with HttpClient, please?

I have the following RestSharp code

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

How can I convert that to use the (Microsoft.Net.Http) HttpClient class, instead?

Take note: I'm doing a POST

Also, this is with the PCL assembly.

Lastly, can I add in a custom header. Say: "ILikeTurtles", "true".

6
  • 2
    Both of your questions have been answered before, see .NET HttpClient. How to POST string value? and Adding Http Headers to HttpClient (ASP.NET Web API). Try to use the search. Commented Feb 16, 2014 at 1:13
  • 1
    ... hold on a second here. Are there really three HttpClient classes now? System.Net.Http.HttpClient, Microsoft.Net.Http.HttpClient and Windows.Web.Http.HttpClient? Really, Microsoft? Really? Commented Feb 16, 2014 at 5:27
  • That's a really good question. I've only read about Microsoft.Net.HttpClient .. there really are -three- ?? Commented Feb 16, 2014 at 22:34
  • 1
    @Charles There are two. System.Net.Http.HttpClient which is in the nuget package Microsoft.Net.Http and Windows.Web.HttpClient which is a native implementation. Commented Feb 17, 2014 at 1:32
  • @Pure.Krome may i know why you decided to go with Microsoft.Net.HttpClient instead of RestSharp..The latters syntax seems to be more readable Commented May 26, 2016 at 14:56

3 Answers 3

12

This should do it

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));
Sign up to request clarification or add additional context in comments.

Comments

3

If you're not opposed to using a library per se, as long as it's HttpClient under the hood, Flurl is another alternative. [disclaimer: I'm the author]

This scenario would look like this:

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

Comments

0

This code isn't using HttpClient but it's using the System.Net.WebClient class, i guess it does the same thing though.

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);
    }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.