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

我正在试图弄清楚如何使用HttpClient来发布一些简单的参数。

  • 电子邮件
  • 密码

我一直用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"

这应该做到这一点

 var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Add("ILikeTurtles", "true"); var parameters = new Dictionary(); parameters["Email"] = "myemail"; parameters["Password"] = "password"; var result = await httpClient.PostAsync("http://www.example.com/", new FormUrlEncodedContent(parameters)); 

如果您不反对使用库本身,只要它是引擎盖下的HttpClient , Flurl就是另一种选择。 [免责声明:我是作者]

这种情况看起来像这样:

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

这段代码没有使用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); }