如何使用 Java 检测某个 URL 是否有效?


java.net 包的 URL 类表示一个 Uniform Resource Locator(统一资源定位符),用于指向万维网中的一个资源(文件或目录或引用)。

此类提供各种构造函数,其中一个构造函数接受一个 String 参数并构造 URL 类的对象。将 URL 传递给此方法时,如果您使用了未知协议或未指定任何协议,此方法将抛出 MalformedURLException。

类似地,此类的 toURI() 方法返回当前 URL 的 URI 对象。如果当前 URL 格式不正确或根据 RFC 2396 语法不正确,此方法将抛出 URISyntaxException。

在一个单独的方法中调用并通过字符串格式传递所需 URL 来创建 URL 对象,并调用 toURI() 方法。将此代码放到 try-catch 块中,如果抛出异常 (MalformedURLException 或 URISyntaxException),则表示给定的 URL 有问题。

示例

import java.util.Scanner;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
public class ValidatingURL {
   public static boolean isUrlValid(String url) {
      try {
         URL obj = new URL(url);
         obj.toURI();
         return true;
      } catch (MalformedURLException e) {
         return false;
      } catch (URISyntaxException e) {
         return false;
      }
   }
   public static void main(String[] args) throws IOException {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter an URL");
      String url = sc.next();
      if(isUrlValid(url)) {
         URL obj = new URL(url);
         //Opening a connection
         HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
         //Sending the request
         conn.setRequestMethod("GET");
         int response = conn.getResponseCode();
         if (response == 200) {
            //Reading the response to a StringBuffer
            Scanner responseReader = new Scanner(conn.getInputStream());
            StringBuffer buffer = new StringBuffer();
            while (responseReader.hasNextLine()) {
               buffer.append(responseReader.nextLine()+"
");             }             responseReader.close();             //Printing the Response             System.out.println(buffer.toString());          }       }else {          System.out.println("Enter valid URL");       }    } }

输出

Enter an URL
ht://tutorialspoint.com/
Enter valid URL

更新于:2019-09-09

2K+ 浏览

开启你的 职业生涯

完成该课程即可获得认证

开始
广告