2013-03-15 45 views
2

我想調用需要.NET 4.5的域身份驗證的REST服務。 (使用Visual Studio 2012使用來自.NET 4.5的域憑據調用REST服務HttpClient

搜索谷歌導致許多人說,HttpClient現在的方式來做到這一點。

但是,據我所知,沒有辦法模擬或附加憑據到HttpClient。

另外,所有流行的REST庫似乎都不兼容.NET 4.5。

超過StackOverflow posts建議使用WebClient作爲解決此問題的一種方法,儘管這在.NET 4.5中似乎不再可用。

如果我想使用.NET 4.5客戶端的域憑據調用REST服務,最好的方法是什麼?

+0

現在看來似乎是複雜的研究HttpClient的,因爲它已經經歷了漫長的測試周期消失,成爲.NET 4.5的一部分,之前發生了很大變化。簡單的答案是,這很簡單:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/35e2a7ae-bba0-406a-a10e-f1677dd5a471/ – Andrew 2013-03-17 08:02:33

回答

2

.NET 4.5中的HttpClient不支持域身份驗證。你需要插入HttpClientHandler與「UseDefaultCredentials」設置爲true:

 string searchResults = string.Empty; 

     try 
     { 
      HttpClientHandler handler = new HttpClientHandler(); 
      handler.UseDefaultCredentials = true; 
      HttpClient client = new HttpClient(handler); 

      client.MaxResponseContentBufferSize = 100000; 
      string responseString = await client.GetStringAsync(RestServiceUrl); 

      searchResults = responseString; 
     } 
     catch (HttpRequestException e) 
     { 
      searchResults = e.Message; 
     } 

另外值得注意的是,如果你正在建設一個Windows 8應用程序,那麼你需要啓用「企業認證」在包中。 appManifest:

enter image description here