2015-11-22 4 views
0

Я пытаюсь загрузить сайт localhost в JavaFX WebView, но он, похоже, не работает. Я создаю HttpServer в приложении перед загрузкой веб-страницы, но он показывает только пустой экран. Навигация в http://localhost:8080/index.html в Google Chrome работает, поэтому я предполагаю, что это проблема, с которой WebView пытается ее загрузить. Загрузка других страниц, не связанных с localhost, действительно работает, но я не могу понять, почему на страницах localhost возникают проблемы.JavaFX WebView не загружает сайт localhost

Код ниже начинается с создания HttpServer с локальными html-файлами, а затем продолжается создание этапа JavaFX и загрузка сайта localhost в WebView, только для отображения пустой страницы.

public class Main extends Application { 

    static String path = ""; 
    static HashMap<String, String> pages = new HashMap(); 

    public static void main(String[] args) throws Exception { 
     HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0); 
     createPage(server, "/index.html", "index.html"); 
     server.setExecutor(null); 
     server.start(); 

     launch(args); 
    } 

    public void start(Stage stage) throws Exception { 
     try { 
      WebView webview = new WebView(); 
      webview.getEngine().load(
        "http://127.0.0.1:8080/index.html" 
      ); 
      webview.setPrefSize(640, 390); 

      stage.setScene(new Scene(webview)); 
      stage.show(); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 

    static class MyHandler implements HttpHandler { 
     @Override 
     public void handle(HttpExchange t) throws IOException { 
      try { 
       String response = readFile(pages.get(t.getHttpContext().getPath()), Charset.defaultCharset()); 
       t.sendResponseHeaders(200, response.length()); 
       OutputStream os = t.getResponseBody(); 
       os.write(response.getBytes()); 
       os.close(); 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    } 

    static void createPage(HttpServer server, String context, String path){ 
     pages.put(context, path); 
     server.createContext(context, new MyHandler()); 
    } 

    static String readFile(String path, Charset encoding) 
      throws IOException 
    { 
     byte[] encoded = Files.readAllBytes(Paths.get(path)); 
     return new String(encoded, encoding); 
    } 

} 

Любая помощь при попытке решить эту проблему очень ценится. Благодаря!

+0

Можете ли вы загрузить другие страницы? – Bill

ответ

0

Изменение t.sendResponseHeaders (200, response.length()); to t.sendResponseHeaders (200, 0); казалось, решил проблему для меня.

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

  • Нет связанных вопросов^_^