我无法在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");
}
}
答案 0 :(得分:1)
displayEditorPane.setPage(url);
如果您需要更高级的加载和成功反馈,有必要放弃这个简单的方法,以便在应用程序中使用更复杂的方法。掌控阅读内容。为此,请查看URLConnection
& HttpURLConnection
。方法特别:
URLConnection.getInputStream()
:
返回从此打开的连接读取的输入流。如果读取超时在数据可供读取之前到期,则从返回的输入流中读取时可以抛出
SocketTimeoutException
。
HttpURLConnection.getResponseCode()
:
从HTTP响应消息中获取状态代码。例如,在以下状态行的情况下:
HTTP/1.0 200 OK
HTTP/1.0 401 Unauthorized
它将分别返回
200
和401
。如果无法从响应中识别代码,则返回-1
。(即,响应不是有效的HTTP)。
有关处理流的信息,请参阅本教程的Basic I/O课程。