2016-07-06 4 views
2

Мне нужно отобразить несколько веб-страниц с удаленного веб-сервера Apache для приложения IoT Core, которое я разрабатываю. Я использовал метод класса WebView .Navigate() для незащищенных страниц и работает очень аккуратно. Однако для моего проекта мне нужно сначала войти в веб-сервер (имя пользователя + пароль), а затем извлечь информацию со страниц, но я не знаю, как это сделать, используя класс WebView. Я невежественна.UWP WebView - Проблемы с регистрацией веб-сервера при отображении содержимого веб-сервера

Я нашел решение, которое использует класс WebBrowser Navigate(), посылая учетные данные в виде кодированной строки с базой 64, но Navigate() WebView позволяет только один аргумент, URI и ничего больше. Кажется, я не могу найти класс WebBrowser.


Я уже пытался вставлять имя пользователя/пароль в URI, но это не работает должным образом, и я знаю, это не очень хорошая идея, чтобы сделать это так.

Возможно ли достичь этого с помощью WebView? Любые предложения/идеи?

Любая помощь оценили


Edit: Я нашел решение, которое работает хорошо для моей проблемы, я отправляю его в случае, если это может помочь кому-то с подобными проблемами.

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

Вы могли бы мне возможность использовать NavigateWithHttpRequestMessage, который позволит вам перейти на страницу с помощью HttpRequestMessage.

Вам по-прежнему необходимо выполнить аутентификацию вне диапазона, используя HttpClient, получить куки-файлы и заголовки аутентификации, а затем использовать их при создании HttpRequestMessage.

Here «са StackOverflow, который должен помочь с этим

+0

Я на самом деле удалось решить после нескольких попыток следовать вашему подходу, а также использовать HttpBaseProtocolFilter, который работает как HttpClientHandler для пространств имен UWP Windows.Web.Http и может содержать учетные данные auth внутри (ServerCredential) для входа. Очень признателен. –

-2

Если удаленный веб-сервер поддерживает HTTP обычную проверку подлинности можно передавать учетные данные в URL, как так:

https://Username:[email protected]/index.html 
+1

Пожалуйста, не делайте этого. Basic Auth на самом деле не очень безопасен. – RubberDuck

+0

не говоря уже о том, что он уже пробовал это – AlexDrenea