Java Swing Web Browser如何注意到URL不存在?

时间:2014-12-13 14:14:26

标签: java swing browser io jeditorpane

我无法在stackoverflow上找到我的问题的解决方案。可能是我看起来很糟糕,如果是这样,我会道歉。


无论如何关于问题: 我已经创建了自己的浏览器,如果URL没有激动或没有响应,我希望它给用户一个错误。我使用Java Swing中的以下命令: EditorPane = setPage(url)//其中EditorPane是JEditorPane


SetPage(URL url)如果它不是参数中发送的url,则只会给我一个错误。那么如果URL没有响应,我怎么能得到反馈呢?


提前谢谢你, - 朱利安 ps:评论是瑞典语,但它们不是很有帮助!

    private void loadPage(URL url, boolean AddOrNot) {
    try{
        System.out.println("loadPage Try");
        displayEditorPane.setPage(url);           // setter sidan till url

        //URL newUrl = displayEditorPane.getPage(); //ger den nuvarande sidans url funkar ei
        //displayEditorPane.setPage(newUrl); //get error ?!?
        String hist=url.toString();
        textField.setText(hist); // men denna fungerar

        if(AddOrNot){//lägger till url i history-list om du inte använt back / forward knapp
            history.add(hist);
            JMenuItem historyFile = new JMenuItem(hist);
            historyFile.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                   textField.setText(hist);
                   position=0;
                   Launch(true);
               } 
            });
            HistoryMenu.add(historyFile);
        }
        //** kollar om forward och back knapparna ska vara aktiva **//
        if(position!=history.size()-1){
            BackButton.setEnabled(true);
        }else{
            BackButton.setEnabled(false);
        }
        if(position>0){
            ForwardButton.setEnabled(true);
        }else{
            ForwardButton.setEnabled(false);
        }


    }catch(IOException io ){
        System.out.println("loadPage Catch " + io);
        msgError("Unable to open page");
    }
}

1 个答案:

答案 0 :(得分:1)

displayEditorPane.setPage(url);

如果您需要更高级的加载和成功反馈,有必要放弃这个简单的方法,以便在应用程序中使用更复杂的方法。掌控阅读内容。为此,请查看URLConnection& HttpURLConnection。方法特别:

  • URLConnection.getInputStream()
      

    返回从此打开的连接读取的输入流。如果读取超时在数据可供读取之前到期,则从返回的输入流中读取时可以抛出SocketTimeoutException

  •   
  • HttpURLConnection.getResponseCode()

      

    从HTTP响应消息中获取状态代码。例如,在以下状态行的情况下:

    HTTP/1.0 200 OK
    HTTP/1.0 401 Unauthorized
    
      

    它将分别返回200401。如果无法从响应中识别代码,则返回-1。(即,响应不是有效的HTTP)。


有关处理流的信息,请参阅本教程的Basic I/O课程。