Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
 try{
      String match="http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?";
 if(tf.getText().equals("")){
 textArea.setText(null);
 JOptionPane.showConfirmDialog(null, "请输入网址!");

 }
else{
 URL url=new URL(tf.getText());
 URLConnection connection=url.openConnection();
 connection.connect();
 InputStream is = connection.getInputStream();
 byte[] buf=new byte[2048];
 int n=0;
 StringBuffer sb=new StringBuffer();
 while((n=is.read(buf))>0){
 sb.append(new String(buf, 0, n, "utf-8"));
 } 
   if(sb.equals("")){
 JOptionPane.showConfirmDialog(null,"网站异常,请检查!");
 }else{
 textArea.setText(sb.toString()+"网站正常运行!"+sdf.format(System.currentTimeMillis()));
 }
 }
 }catch (Exception ex) {
ex.printStackTrace();
}
   }
}, 0, split);问题1:我想判断一下文本框输入的网址是否是合法的,不合法则弹出提示框,但是我试过很多的正则判断都不行,有没有一个能判断输入的是否是网址的正则。
问题2:我用sb来判断网站运行状态,如果sb的内容为空,则表示网页无法访问。但是判断不出来。该如何去判断输入的网址是否可以访问,当不能访问,程序也可以运行下去,但是会提出网站无法访问的提示框,并显示出无法访问的时间。各位大虾,小弟求解答。谢了。(tf是swing里面的JTextField,textArea是swing的JTextArea)

解决方案 »

  1.   

    我来说说我的思路:1、对于网址的正则, 要看具体的要求的,是不是只要判断为WWW开头的就行?判断也不能你那样写,应该:
        Pattern p = Pattern.compile("http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?");  //关于网址的正则要根据不同的需求来写的,我是直接复制你的
                Matcher m = p.matcher(url);   //url 指的是 传进来的网址
                boolean b= m.matches();       //b表示判断网址的有效性
    2、怎样判断网址是否能访问,我只能简单说说思路,你自己写代码吧:
       
       你可以通过  类似于  CMD -->PING 网址    就知道了……
      

  2.   

    自己查查  API  有关  网络编程方面的,绝对有  给外网发送信息,然后返回一个值,来判断该网址是否能访问的
    亲, 你的结贴率啊……
      

  3.   

    请问这行规则
    String match="http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?";
    声明后,你在哪里用它进行匹配了呢?
      

  4.   

          String match="http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?"; 
          Pattern p = Pattern.compile(match); 
          Matcher m = p.matcher(textArea.getText());   
           boolean b= m.matches();           
     if(tf.getText().equals("")){
     textArea.setText(null);
     JOptionPane.showConfirmDialog(null, "请输入网址!");

     }
     else if(b==false){
     textArea.setText(null);
    JOptionPane.showConfirmDialog(null, "请输入正确的网址!");
     }
     else{

     URL url=new URL(tf.getText());
     URLConnection connection=url.openConnection();
     connection.connect();
     InputStream is = connection.getInputStream();
     byte[] buf=new byte[2048];
     int n=0;
     StringBuffer sb=new StringBuffer();
     while((n=is.read(buf))>0){
     sb.append(new String(buf, 0, n, "utf-8"));
     } 
     if(sb.equals("")){
     JOptionPane.showConfirmDialog(null,"网站异常,请检查!");
     }else{
     textArea.setText(sb.toString()+"网站正常运行!"+sdf.format(System.currentTimeMillis()));
     }
     }我是这样匹配的,但还是不行呢???