Accès réseau à travers un firewall
Pour indiquer à Java que votre machine doit traverser un firewall pour
accéder à l'Internet, vous devez opter pour l'une de ces deux solutions
:
- exécuter votre classe principale (par exemple
Test) de cette façon :
java -DproxySet=true -DproxyHost=proxy -DproxyPort=3128 Test
- ajouter les lignes ci-dessous au début de la fonction
main()
// Propriétés système
java.util.Properties sysProperties = System.getProperties();
// Spécifications de la machine relai : nom/port/activation
sysProperties.put("proxyHost", "proxy");
sysProperties.put("proxyPort", "3128");
sysProperties.put("proxySet", "true");
Analyse d'un document HTML
import java.io.*;
import java.net.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
class GetLinks {
public static void extraireLiens(String url) {
EditorKit kit = new HTMLEditorKit();
Document doc = kit.createDefaultDocument();
doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);
try {
// ouverture d'une connexion HTTP
URLConnection conn = new URL(url).openConnection();
Reader rd = new InputStreamReader(conn.getInputStream());
// Analyse du document HTML
kit.read(rd, doc, 0);
// Itération sur les éléments du 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) {
// imprime les URL des liens
System.out.println(
s.getAttribute(HTML.Attribute.HREF));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}