有 Java 编程相关的问题?

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

html Java测试URL请求测试

您好,我是java和编程的新手,所以如果我对一些简单的东西有错误,请原谅我。我的目标是导入一个文本文件,扫描每一行,如果读取了某个内容,则测试该行(即URL),然后将其打印到输出文件中。因此,程序正在测试每个URL,如果URL有效(工作),我将在新的输出文件中打印该行

我的问题是测试URL部分。它读取行以便打印URL,但它会打印多次任何建议?有没有办法让它打印一次?我想我理解它打印多次,因为它逐行读取HTML代码

try
{
    // Test URL Connection
    URL url = new URL("http://www." + line);
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
    wr = new OutputStreamWriter(conn.getOutputStream());
    wr.flush();

    // Get the response
    rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    while((lines = rd.readLine()) != null)
    {
        System.out.println(line);
    }
}
catch(Exception e)
{
    System.out.println(e.toString());
}

共 (1) 个答案

  1. # 1 楼答案

    您的代码正在将行读入名为“lines”的变量,但您正在打印出line变量。line变量是用于创建URL的变量:

    URL url = new URL("http://www."+line);
    

    如果您只想打印出URL,那么您可能需要考虑将URL构造成这样的字符串:

    String targetUrl = String.format("http://www.%s", domainName);
    System.out.println(targetUrl);
    

    然后创建URL对象

    URL url = new URL(targetUrl);
    

    如果您试图打印从目标URL检索的内容,请将代码改为打印“行”:

    System.out.println(lines); 
    

    最好使用更具描述性的变量名。例如,不要使用“line”构造URL,而是使用“domainName”之类的变量名。然后,当您一次读取一行时,可以使用变量名“line”

    // Assuming that domainName is set before the try block
    try
    {
        // Test URL Connection
        URL url = new URL("http://www."+domainName);
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.flush();
    
        String line = null;
    
        // Get the response
        rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        while ((line = rd.readLine()) != null) 
        {
            System.out.println(line);                       
        }
    }
    catch (Exception e) 
    {
        System.out.println(e.toString());
    }