检查URL是否存在

9

我需要检查一个URL是否存在。我想编写一个servlet来实现这个功能,即检查一个URL是否存在。如果输入的URL不存在,则应返回一些信息。


6
一般情况下,不能说一个URL不存在。 - SLaks
4个回答

26

更好的HTTP解决方案:

public static boolean exists(String URLName){
    try {
      HttpURLConnection.setFollowRedirects(false);
      // note : you may also need
      //        HttpURLConnection.setInstanceFollowRedirects(false)
      HttpURLConnection con =
         (HttpURLConnection) new URL(URLName).openConnection();
      con.setRequestMethod("HEAD");
      return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e) {
       e.printStackTrace();
       return false;
    }
  }  

如果您正在寻找其他网址,请尝试此代码

  public static boolean exists(String URLName){
      boolean result = false;
      try {
          url = new URL("ftp://ftp1.freebsd.org/pub/FreeBSD/");
          //url = new URL("ftp://ftp1.freebsd.org/pub/FreeBSD123/");//this will fail

          input = url.openStream();

           System.out.println("SUCCESS");
           result = true;

            } catch (Exception ex) {
               Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
            }
         return result;
  }

来源: http://www.rgagnon.com/javadetails/java-0059.html


2
在URL中,http并不是唯一的协议/方案。 - Michael Konietzka
@Michael Konietzka 更新可能回答了您的评论。 - jmj
1
mailto:example@example.com 是什么意思? - Michael Konietzka
1
但它是一个有效的URL,存在的。;-) - Michael Konietzka
1
我在需求中没有看到这个。;-) OP通常是在谈论URL。;-) 此外,“存在”的解释不清楚。 URL的存在意味着什么?从我的角度来看,当我写下或创建它时,URL已经存在。也许OP只是想知道他是否可以访问由HTTP-URL表示的HTTP资源,但这不是OP所问的。;-) - Michael Konietzka
显示剩余6条评论

2

0

你可以建立连接,获取输入流并检查是否为空。


-3

我使用了这个Bash脚本来检查URL,但需要将所有文件放在一个名为“urls.csv”的文件中。

#!/bin/bash

###############################################
# mailto: ggerman@gmail.com
# checkurls
# https://github.com/ggerman/checkurls/
# require curl
###############################################

url() {
  cat urls.csv | 
  replace  | 
  show
}

replace() {
  tr ',' ' '
}

show() {
  awk '{print $1}'
}

url | \
while read CMD; do
  echo $CMD
  curl -Is $CMD | head -n 1
done

我已经点了踩,因为这个问题被标记为Java。 - ianmayo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接