2014-02-16 150 views
7

我想弄清楚如何使用HttpClientPOST一些簡單的參數。如何將此.NET RestSharp代碼轉換爲Microsoft.Net.Http 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"

+2

您的問題都已經回答過了,參見[.NET的HttpClient。如何POST字符串值?](http://stackoverflow.com/questions/15176538/net-httpclient-how-to-post-string-value)和[將Http頭添加到HttpClient(ASP.NET Web API)]( http://stackoverflow.com/questions/12022965/adding-http-headers-to-httpclient-asp-net-web-api)。嘗試使用搜索。 – CodeCaster

+0

......在這裏等一下。現在真的有**三個''HttpClient'類嗎? 'System.Net.Http.HttpClient','Microsoft.Net.Http.HttpClient'和'Windows.Web.Http.HttpClient'?真的,微軟?真? – Charles

+0

這是一個非常好的問題。我只讀過'Microsoft.Net.HttpClient' ..真的有 - 三 - ?? –

回答

9

這應該這樣做

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

這段代碼沒有使用HttpClient,但它使用了System.Net.WebClient類,但我想它的確做了同樣的事情。

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

如果你不反對使用庫本身,只要它的引擎蓋下HttpClientFlurl是另一種選擇。 [免責聲明:我是作者]

這種情況應該是這樣的:

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