我正在尝试弄清楚如何使用HttpClient
来POST
一些简单的参数。
我一直在使用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"
。
答案 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)
如果您不反对使用图书馆本身,只要它是HttpClient
,Flurl是另一种选择。 [免责声明:我是作者]
此方案如下所示:
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);
}