UWP WebView - 显示Web服务器内容时Web服务器登录的问题

时间:2016-07-06 08:32:23

标签: apache webview uwp webpage windows-10-iot-core

我需要显示一些来自远程Apache网络服务器的网页,用于我正在开发的IoT核心应用程序。我已经对非受保护的页面使用了WebView类方法.Navigate(),它的工作非常简洁。但是,对于我的项目,我需要首先登录到webserver(用户名+密码),然后从页面中检索信息,但我不知道如何使用WebView类来完成。我很无能为力。

我找到了一个使用WebBrowser类Navigate()的解决方案,将凭证作为64个基本编码的字符串发送,但WebView的Navigate()只允许1个参数,URI,而不是其他任何内容。我似乎无法找到WebBrowser类。

我已经尝试将用户名/密码嵌入到URI中,但它无法正常工作,我知道这样做并不是一个好主意。

是否可以使用WebView实现此目的?任何建议/想法?

任何帮助表示赞赏

编辑:我找到了一个适用于我的问题的解决方案,我发布它是为了对有类似问题的人提供帮助。

Uri req_uri = new Uri(uri_list[i]); 

HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();  
filter.ServerCredential = new PasswordCredential(req_uri.ToString(), "username", "password");

 HttpCookieCollection cookiejar = filter.CookieManager.GetCookies(req_uri);  
 if (cookiejar.Count > 0)  
 {
     foreach (HttpCookie cookie in cookiejar)
     {
         filter.CookieManager.SetCookie(cookie);
     }

 } 
 Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient(filter);


  Windows.Web.Http.HttpRequestMessage http_req = new Windows.Web.Http.HttpRequestMessage();

  http_req.Method = Windows.Web.Http.HttpMethod.Get;   
  http_req.RequestUri = req_uri;
  var clientResponse = client.GetAsync(req_uri);

  webView.NavigateWithHttpRequestMessage(http_req);

  http_req.Dispose();
  client.Dispose();

2 个答案:

答案 0 :(得分:2)

您可以使用 for (int i = 0; i < readString.Length; i = i + 4) { //Decryption switch (readString.Substring(i, 4)) { case "8024": decryptedString = decryptedString + "\n"; break; } } inputTextBox.Text = decryptedString; ,这样您就可以使用NavigateWithHttpRequestMessage导航到某个页面了。

您仍然需要使用HttpRequestMessage进行带外身份验证,获取Cookie和身份验证标头,然后在构建HttpClient时使用它们。

Here是一个应该有帮助的StackOverflow

答案 1 :(得分:-2)

如果您的远程Web服务器支持HTTP Basic身份验证,您可以像这样传递URL中的凭据:

https://Username:Password@www.example.com/index.html