如何将此.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); }