有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在读取URL时没有协议异常

我试图读取URL,然后将其转换为字符串,并将内容写入文本文件,但在编译代码时出现以下异常。以下是我的代码和例外:

import java.io.*;
import java.net.URL;
import java.net.URLConnection;

public class Main {
public  static  String url = "google.com";
public  static  String fileName= null;
public  static  String fileConttent ="Something";

public static void main(String[] args) throws Exception {
      getText(new String(url));
}

public static void getText(String url) throws Exception {
    URL website = new URL("url\n" +
            "    public static void main(String[] args) throws Exception {\n" +
            "          getText(new String(url));\n" +
            "    }\n" +
            "\n" +
            "    public static void getText(String url) throws Exception {\n" +
            "        URL website = new URL(\"url");
    URLConnection connection = website.openConnection();
    BufferedReader in = new BufferedReader(
            new InputStreamReader(
                    connection.getInputStream()));

    StringBuilder response = new StringBuilder();
    String inputLine;

    while ((inputLine = in.readLine()) != null)
        response.append(inputLine);

    in.close();

    String toBeWritten = response.toString();
    System.out.println(toBeWritten);
}




public static void createFile(String fileName,String fileContent){
    Writer writer = null;

    try {
        writer = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream("C:\\Users\\Dell\\Documents\\t"+"fileName"), "utf-8"));
        writer.write(fileContent);
    } catch (IOException ex) {
        // report
    } finally {
        try {writer.close();} catch (Exception ex) {}
    }

}



}

这是我的例外:

    Exception in thread "main" java.net.MalformedURLException: no protocol: url
at java.net.URL.<init>(URL.java:583)
at java.net.URL.<init>(URL.java:480)
at java.net.URL.<init>(URL.java:429)
at Main.getText(Main.java:15)
at Main.main(Main.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

进程已完成,退出代码为1

应该做些什么来解决这个问题?感谢您提前给出所有答案

更新

非常感谢你的回答。我照你说的做了,但还是犯了同样的错误

 Exception in thread "main" java.net.MalformedURLException: no protocol: url
public static void main(String[] args) throws Exception {
      getText(new String(url));
}

public static void getText(String url) throws Exception {
    URL website = new URL("url
at java.net.URL.<init>(URL.java:583)
at java.net.URL.<init>(URL.java:480)
at java.net.URL.<init>(URL.java:429)
at Main.getText(Main.java:15)
at Main.main(Main.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

进程已完成,退出代码为1


共 (3) 个答案

  1. # 1 楼答案

    将代码更改为:

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class Main {
     public static String url = "https://www.google.com";
     public static String fileName = null;
     public static String fileConttent = "Something";
    
     public static void main(String[] args) throws Exception {
      getText(new String(url));
     }
    
     public static void getText(String url) throws Exception {
      URL website = new URL(url);
      URLConnection connection = website.openConnection();
      BufferedReader in = new BufferedReader(new InputStreamReader(
        connection.getInputStream()));
    
      StringBuilder response = new StringBuilder();
      String inputLine;
    
      while ((inputLine = in.readLine()) != null)
       response.append(inputLine);
    
      in.close();
    
      String toBeWritten = response.toString();
      System.out.println(toBeWritten);
     }
    }
    
  2. # 2 楼答案

    public static String url = "google.com";

    这是一个域,不是一个URL(或一个名为“google.com”的文件的相对URL),但我们不要去那里。URL有协议,例如http

  3. # 3 楼答案

    您需要将协议添加到url:

    public  static  String url = "http://google.com";
    

    你必须修改你的代码(无论结果如何):

    URL website = new URL("url\n" +
                "    public static void main(String[] args) throws Exception {\n" +
                "          getText(new String(url));\n" +
                "    }\n" +
                "\n" +
                "    public static void getText(String url) throws Exception {\n" +
                "        URL website = new URL(\"url");
    

    URL website = new URL(url);