我正在编写一个 Java 程序,它会访问一个 url 列表,并且需要首先知道该 url 是否存在。我不知道该怎么做,也找不到要使用的 java 代码。
网址是这样的:
http: //ip:port/URI?Attribute=x&attribute2=y
这些是我们内部网络上的 URL,如果有效,它们将返回 XML。
谁能建议一些代码?
你可以只使用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
}
}
您可以通过从 url 请求标头来减少负载。
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 无效
打开连接并检查响应是否包含有效的 XML?这太明显了还是你在寻找其他魔法?
您可能想要使用 HttpURLConnection 并检查错误状态: