2016-09-04 2 views
-1

У меня есть приложение Windows WUP с веб-интерфейсом, который загружает веб-страницу из Интернета. Теперь, если пользователь отключен, я хочу отобразить локальную версию этой страницы. Веб-страница меняется один раз в день, и отображается только базовая таблица.Внедрение автономного режима для Windows UWP WebView

Как это сделать?

Спасибо за помощь.

+0

Веб-страница в вопросе статическая или динамическая? –

+0

, если он статичен, вы всегда можете связать его вместе с вашим проектом и загрузить локальный файл. –

+0

Теперь моя проблема более ясна –

ответ

2

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

Вот метод, в NavigationCompleted случае вашего WebView, кода:

private async void webView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args) 
{ 
    if (args.IsSuccess == true) 
    { 
     try 
     { 
      using (HttpClient client = new HttpClient()) 
      { 
       if (args.Uri != null && args.Uri.ToString() == "https://developer.microsoft.com/en-us/windows/develop") 
       { 
        var htmlstring = await client.GetStringAsync(args.Uri); 
        StorageFolder local = ApplicationData.Current.LocalFolder; 
        StorageFile file = await local.CreateFileAsync("offline-web.html", CreationCollisionOption.ReplaceExisting); 
        using (StreamWriter writer = new StreamWriter(await file.OpenStreamForWriteAsync())) 
        { 
         writer.Write(htmlstring); 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
     } 
    } 
    else 
    { 
     StorageFolder local = ApplicationData.Current.LocalFolder; 
     StorageFile file = await local.GetFileAsync("offline-web.html"); 
     if (file != null) 
     { 
      using (StreamReader reader = new StreamReader(await file.OpenStreamForReadAsync())) 
      { 
       var htmlstring = await reader.ReadToEndAsync(); 
       sender.NavigateToString(htmlstring); 
      } 
     } 
     else 
     { 
      MessageDialog dlg = new MessageDialog("Please check your internet", "Warning"); 
      await dlg.ShowAsync(); 
     } 
    } 
} 

Вы также можете попробовать другие методы, например, сохранить файл HTML, и перейдите к локальному файлу. И, как сказал @Amod Gokhale, если есть какие-то динамические объекты, которые нужно загружать с помощью Интернета, то в автономном режиме эти объекты не будут загружены, даже если вы сохранили html-страницу, если вы также не сохранили все ресурсы этих динамических объектов ,

Смежные вопросы