如何将此.NET RestSharp代码转换为Microsoft.Net.Http HttpClient代码?

时间:2014-02-16 00:13:40

标签: c# .net restsharp dotnet-httpclient

我正在尝试弄清楚如何使用HttpClientPOST一些简单的参数。

  • 电子邮件
  • 密码

我一直在使用RestSharp,但我正试图迁移它。

如何使用HttpClient来完成此操作?

我有以下RestSharp代码

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

如何将其转换为使用(Microsoft.Net.Http) HttpClient类,而不是?

请注意:我正在进行POST

此外,这是PCL程序集。

最后,我可以添加自定义标头吗?说:"ILikeTurtles", "true"

3 个答案:

答案 0 :(得分:10)

这应该这样做

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

答案 1 :(得分:1)

如果您不反对使用图书馆本身,只要它是HttpClientFlurl是另一种选择。 [免责声明:我是作者]

此方案如下所示:

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

答案 2 :(得分:0)

这段代码没有使用HttpClient,但是它使用的是System.Net.WebClient类,我猜它虽然做了同样的事情。

private static void Main(string[] args)
    {
        string uri = "http://www.example.com/";
        string email = "email@example.com";
        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);
    }