EnhancedURLCheck
import java.io.*;
import java.net.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
class EnhancedURLCheck {
public static void main(String[] args) {
HttpURLConnection.setFollowRedirects(false);
EditorKit kit = new HTMLEditorKit();
Document doc = kit.createDefaultDocument();
// The Document class does not yet
// handle charset's properly.
doc.putProperty("IgnoreCharsetDirective",
Boolean.TRUE);
try {
// Create a reader on the HTML content.
Reader rd = getReader(args[0]);
// Parse the HTML.
kit.read(rd, doc, 0);
// Iterate through the elements
// of the HTML document.
ElementIterator it = new ElementIterator(doc);
javax.swing.text.Element elem;
while ((elem = it.next()) != null) {
SimpleAttributeSet s = (SimpleAttributeSet)
elem.getAttributes().getAttribute(
HTML.Tag.A);
if (s != null) {
validateHref(
(String)s.getAttribute(
HTML.Attribute.HREF));
}
}
} catch (Exception e) {
e.printStackTrace();
}
System.exit(1);
}
// Returns a reader on the HTML data. If 'uri' begins
// with "http:", it's treated as a URL; otherwise,
// it's assumed to be a local filename.
static Reader getReader(String uri)
throws IOException {
if (uri.startsWith("http:")) {
// Retrieve from Internet.
URLConnection conn =
new URL(uri).openConnection();
return new
InputStreamReader(conn.getInputStream());
} else {
// Retrieve from file.
return new FileReader(uri);
}
}
private static void validateHref(String urlString) {
if ((urlString != null) &&
urlString.startsWith("http://")) {
try {
URL url = new URL(urlString);
URLConnection connection =
url.openConnection();
if (connection instanceof HttpURLConnection) {
HttpURLConnection httpConnection =
(HttpURLConnection)connection;
httpConnection.setRequestMethod("HEAD");
httpConnection.connect();
int response =
httpConnection.getResponseCode();
System.out.println("[" + response + "]" +
urlString);
String location =
httpConnection.getHeaderField("Location");
if (location != null) {
System.out.println(
"Location: " + location);
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
import java.net.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
class EnhancedURLCheck {
public static void main(String[] args) {
HttpURLConnection.setFollowRedirects(false);
EditorKit kit = new HTMLEditorKit();
Document doc = kit.createDefaultDocument();
// The Document class does not yet
// handle charset's properly.
doc.putProperty("IgnoreCharsetDirective",
Boolean.TRUE);
try {
// Create a reader on the HTML content.
Reader rd = getReader(args[0]);
// Parse the HTML.
kit.read(rd, doc, 0);
// Iterate through the elements
// of the HTML document.
ElementIterator it = new ElementIterator(doc);
javax.swing.text.Element elem;
while ((elem = it.next()) != null) {
SimpleAttributeSet s = (SimpleAttributeSet)
elem.getAttributes().getAttribute(
HTML.Tag.A);
if (s != null) {
validateHref(
(String)s.getAttribute(
HTML.Attribute.HREF));
}
}
} catch (Exception e) {
e.printStackTrace();
}
System.exit(1);
}
// Returns a reader on the HTML data. If 'uri' begins
// with "http:", it's treated as a URL; otherwise,
// it's assumed to be a local filename.
static Reader getReader(String uri)
throws IOException {
if (uri.startsWith("http:")) {
// Retrieve from Internet.
URLConnection conn =
new URL(uri).openConnection();
return new
InputStreamReader(conn.getInputStream());
} else {
// Retrieve from file.
return new FileReader(uri);
}
}
private static void validateHref(String urlString) {
if ((urlString != null) &&
urlString.startsWith("http://")) {
try {
URL url = new URL(urlString);
URLConnection connection =
url.openConnection();
if (connection instanceof HttpURLConnection) {
HttpURLConnection httpConnection =
(HttpURLConnection)connection;
httpConnection.setRequestMethod("HEAD");
httpConnection.connect();
int response =
httpConnection.getResponseCode();
System.out.println("[" + response + "]" +
urlString);
String location =
httpConnection.getHeaderField("Location");
if (location != null) {
System.out.println(
"Location: " + location);
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}