2013-07-25 48 views
4

我正在尋找一種自動驗證網站的方法。 我在我的c#Windows Store應用程序中有一個WebView,我想訪問一個受密碼保護的網站。WebView源代碼 - 自動驗證

WebView.Source= new URI("http://UserId:[email protected]/"); 

這是行不通的,因爲我得到一個安全異常:

A security problem occurred. (Exception from HRESULT: 0x800C000E); 

下面的方法,也沒有工作,我只能得到一個網站的HTML,但沒有CSS或JavaScript:

HttpClientHandler handler = new HttpClientHandler(); 
handler.Credentials = new NetworkCredential("UserId", "Password"); 
HttpClient client = new HttpClient(handler); 

string body = await client.GetStringAsync("http://foo.com"); 
webview.NavigateToString(body);  

有沒有其他辦法?

+3

值得注意的是,Windows 8.1包含一個名爲Web Authentication Broker的新API,可以毫不費力地完成您所要求的功能。 –

回答

4

我已經跨越同樣的問題來了,但幸運的是找到了答案:)在這裏 主要問題是,Windows應用商店的應用程序包含2個不同的HttpClient的

其中之一就是「經典」的一個,我們從C#應用程序知道(自動使用),另一種是 「新」 的HttpClient - 其與web視圖:)

婁連接是兩種類型的:

System.Net.Http.HttpClient(經典之一)
Windows.Web.Http.HttpClient(新的)

所以,要記得申報新的,這樣做的代碼波紋管

var filter = new HttpBaseProtocolFilter();  
filter.ServerCredential = new Windows.Security.Credentials.PasswordCredential("http://website","login", "password"); 
      Windows.Web.Http.HttpClient client2 = new Windows.Web.Http.HttpClient(filter); 
      var response = await client2.GetAsync(new Uri("http://website")); 
WebView.Source = new Uri("http://website"); 

現在還記得改到你想使用的憑據登錄名和密碼,以及一個網站是要進行身份驗證的網站。

從服務器獲取的響應是很重要的 - 這會讓用戶身份驗證@服務器等下次你去webView的你會被驗證

它正常工作與基本的身份驗證和NTLM身份驗證的網站時

希望它可以幫助人們尋找解決這個問題的方法:)

+0

美好的一天,先生,請問您斷言的來源:「Windows.Web.Http.HttpClient」連接到「WebView」?它沒有在[doc](https://msdn.microsoft.com/library/windows/apps/windows.ui.xaml.controls.webview.aspx)中提到有關「HttpClient」的任何內容。 –