Java 如何从UserInput获取URL内容

Java 如何从UserInput获取URL内容,java,Java,我正在尝试从用户输入中获取url内容 package edu.psgv.sweng861; import java.net.*; import java.util.Scanner; import java.io.*; /** * A complete Java class that demonstrates how to read content (text) from a * URL using the Java URL and URLConnection classes. The

我正在尝试从用户输入中获取url内容

package edu.psgv.sweng861;

import java.net.*; 
import java.util.Scanner; 
import java.io.*; 
/**
 * A complete Java class that demonstrates how to read content (text) from a
 * URL using the Java URL and URLConnection classes. There is no user input in
 * this program, just a hard-wired url to fetch a conforming Http live streaming
 * playlist.  
 */
 public class JavaUrlConnectionReader {
     public static void main(String[] args) {
         Scanner myObj = new Scanner(System.in);  // Create a Scanner object
         System.out.println("Enter URL:");
         String userUrl = myObj.nextLine();  // Read user input
         System.out.println("User URL is: " + userUrl);  // Output user input 
     }

     private static String getUrlContents(String theUrl) {
         String content = "";
         try {
             URL url = new URL(theUrl);
             URLConnection urlConnection = url.openConnection();
             BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
             String line;
             while ((line = bufferedReader.readLine()) != null) {
                 content += line + "\n";
             }
             bufferedReader.close();
         } catch(Exception e) {
             System.out.println("The url was invalid, please try again");
         }
         return content;
    }
}

当用户提供url时,而不是试图建立连接时,您应该验证url。URL方法只负责一件事,而不是验证数据

相反,您应该创建一个方法,该方法可以验证用户在中提供的数据。这里有一个例子

public static boolean isValidUrl(String url, String regexPattern){
    Pattern patt = Pattern.compile(regexPattern);
    Matcher matcher = patt.matcher(url);
    return matcher.matches();
   }

    public static void main(String[] args) {
        String url = "https://youtube.com";
        String urlRegex =  "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
        System.out.println("Url is valid: " + isValidUrl(url, urlRegex)); //URL is valid, and it will print true
    }
下面我添加了一个布尔逻辑的工作示例,您可以使用它来验证扫描仪的输入

 Scanner scan = new Scanner(System.in);
    String url;
    do{
        System.out.println("Please enter your url");
        url = scan.nextLine();
    }while(!isValidUrl(url));
    System.out.println("The Url was successfull"); //executs only if when the conditions is not met
}

问题是什么?请说明,问题是什么?它不会捕获异常。好的,但是否发生异常?如果没有更多细节,很难提供帮助?用户输入必须是URL,如果用户输入是integer之类的其他内容,它将无法捕获它。当您运行时,它只会在W控制台中显示EnterURL您应该验证用户输入,当您从用户处获得输入时。。。当您尝试发出URL请求时不会