5

我正在编写一个 Java 程序,它会访问一个 url 列表,并且需要首先知道该 url 是否存在。我不知道该怎么做,也找不到要使用的 java 代码。

网址是这样的:

http: //ip:port/URI?Attribute=x&attribute2=y

这些是我们内部网络上的 URL,如果有效,它们将返回 XML。

谁能建议一些代码?

4

5 回答 5

11

你可以只使用httpURLConnection. 如果它无效,您将不会得到任何回报。

    HttpURLConnection connection = null;
try{         
    URL myurl = new URL("http://www.myURL.com");        
    connection = (HttpURLConnection) myurl.openConnection(); 
    //Set request to header to reduce load as Subirkumarsao said.       
    connection.setRequestMethod("HEAD");         
    int code = connection.getResponseCode();        
    System.out.println("" + code); 
} catch {
//Handle invalid URL
}

或者你可以像从 CMD 一样 ping 它并记录响应。

String myurl = "google.com"
String ping = "ping " + myurl 

try {
    Runtime r = Runtime.getRuntime();
    Process p = r.exec(ping);
    r.exec(ping);    
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String inLine;
    BufferedWriter write = new BufferedWriter(new FileWriter("C:\\myfile.txt"));

    while ((inLine = in.readLine()) != null) {             
            write.write(inLine);   
            write.newLine();
        }
            write.flush();
            write.close();
            in.close();              
     } catch (Exception ex) {
       //Code here for what you want to do with invalid URLs
     } 
}
于 2012-05-11T13:05:45.577 回答
5
  1. 格式错误的 url 会给你一个例外。
  2. 要知道您的网址是否处于活动状态,您必须点击该网址。没有其他办法。

您可以通过从 url 请求标头来减少负载。

于 2012-05-11T13:02:28.950 回答
3
package com.my;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;

public class StrTest {

public static void main(String[] args) throws IOException {

    try {
        URL url = new URL("http://www.yaoo.coi");
        InputStream i = null;

        try {
            i = url.openStream();
        } catch (UnknownHostException ex) {
            System.out.println("THIS URL IS NOT VALID");
        }

        if (i != null) {
            System.out.println("Its working");
        }

    } catch (MalformedURLException e) {
        e.printStackTrace();
           }
      }
  }

输出:此 URL 无效

于 2012-05-11T13:39:47.560 回答
1

打开连接并检查响应是否包含有效的 XML?这太明显了还是你在寻找其他魔法?

于 2012-05-11T12:59:37.710 回答
1

您可能想要使用 HttpURLConnection 并检查错误状态:

HttpURLConnection javadoc

于 2012-05-11T13:02:27.110 回答