2014-10-29 69 views
2

我使用Microsoft.AspNet.WebApi.Client我ASP.MVC 5項目消費REST服務。我遵循this教程來使用HttpClient。由於ReadAsAsync方法在HttpContent中不再可用,因此代碼未編譯。挖了一下後,我才知道這是一個在System.Net.Http.Formatting.dll中定義的擴展方法。我發現了一個相同的DLL here Nuget包,但該軟件包已過時,我無法安裝它。我也想根據this帖子在Program Files文件夾中搜索該DLL,但我無法得到它。任何想法如何使ReadAsAsync工作?任何幫助極大appreiciated。謝謝。替代ReadAsAsync方法HttpContent

+1

添加引用,包括'System.Net.Http;'和'System.Net.Http.Formating;'版本4.0.0.0 – 2014-10-29 07:08:21

+0

我在哪裏可以得到該DLL的?任何想法?我試着通過Packge Manger控制檯安裝它,但是它顯示'無法找到包'System.Net.Http.Formatting'的版本'4.0.0.0'。我猜是不贊成的。 – 2014-10-29 07:12:43

+2

你已經在你的GAC裏有'Http.Formatting'。 – 2014-10-29 07:16:51

回答

1

你有什麼需要做的是添加新的參考System.Net.HttpClient;System.Net.HttpClient.Formating;

這是我的HttpClient示例代碼:

下面的代碼是用來獲取使用HttpClient的薩巴證書。

using System.Net.Http; 
using System.Net.Http.Headers; 
using GoSaba.Models.Saba; 

namespace GoSaba.Controllers.Saba 
{ 
    class LoginController 
    { 
     //HTTP GET: Saba/api/login 
     public async Task<string> GetCertificate(string host, string user, string password, string site) 
     { 
      StringBuilder getCertificate = new StringBuilder(); 

      if(!string.IsNullOrEmpty(host)) 
      { 
       using(var httpClient = new HttpClient()) 
       { 
        httpClient.BaseAddress = new Uri(string.Format("http://{0}/", host)); 
        httpClient.DefaultRequestHeaders.Accept.Clear(); 
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
        httpClient.DefaultRequestHeaders.Add("user", user); 
        httpClient.DefaultRequestHeaders.Add("password", password); 
        httpClient.DefaultRequestHeaders.Add("site", site); 

        HttpResponseMessage httpResponse = await httpClient.GetAsync("Saba/api/login"); 

        if(httpResponse.IsSuccessStatusCode) 
        { 
         LoginModel.GetCertificate saba = await httpResponse.Content.ReadAsAsync<LoginModel.GetCertificate>();//LoginModel.GetCertificate is model. 
         getCertificate.Append(saba.certificate); 
        } 
       } 
      } 

      return getCertificate.ToString(); 
     } 
    } 
} 

您可以在如何使用HttpClient中使用此參考。

+0

我的計算機上沒有System.Net.Http.Formatting,哪個.Net版本安裝它? – user3285954 2016-03-22 18:36:06

+0

它在我的工作電腦上,但不在我的家用電腦上。兩者都安裝了.NET 4.6.1。 – user3285954 2016-03-22 18:48:20