Take this example.
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;
public class HttpConnect {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.rgagnon.com/howto.html");
URLConnection con = url.openConnection();
Reader reader = new InputStreamReader(con.getInputStream());
while (true) {
int ch = reader.read();
if (ch==-1) {
break;
}
System.out.print((char)ch);
}
}
}
The above snippet reads the HTML page and dumps it to the console.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD>
<!-- developpe par Real Gagnon, Quebec Canada -->
<LINK REL="SHORTCUT ICON" HREF="http://www.maixuanviet.com/favicon.ico">
<META NAME="description"
Content="Real's JAVA JAVASCRIPT WSH and PowerBuilder How-to pages with useful code snippets">
<META NAME="keywords"
Content="java,javascript,wsh,vbscript,how-to,powerbuilder">
<LINK title="mystyle" href="howto.css" type="text/css" rel="stylesheet">
...
To trace what is going on at the HTTP protocol level, we can switch the HttpURLConnection/UrlConnection in debug mode.
You must enable the java-logging mechanism by setting a special property when starting the JVM :
java.exe -Djava.util.logging.config.file=logging.properties HttpConnect
and put in logging.properties file (by default in JRE_HOME\lib) the following property
sun.net.www.protocol.http.HttpURLConnection.level = ALL
Note :
If running from Eclipse, you put the -Djava.util.logging… via the Run configuration dialog -> Arguments Tab -> VM arguments textarea.
The result is :
2010-08-07 00:00:31 sun.net.www.protocol.http.HttpURLConnection writeRequests
FIN: sun.net.www.MessageHeader@16caf435 pairs: {GET /howto.html HTTP/1.1: null}{User-Agent: Java/1.6.0_20}{Host: www.maixuanviet.com}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}
2010-08-07 00:00:31 sun.net.www.protocol.http.HttpURLConnection getInputStream
FIN: sun.net.www.MessageHeader@5ac0728 pairs: {null: HTTP/1.1 200 OK}{Date: Sat, 07 Aug 2010 04:00:33 GMT}{Server: Apache}{Accept-Ranges: bytes}{Content-Length: 17912}{Keep-Alive: timeout=5, max=64}{Connection: Keep-Alive}{Content-Type: text/html}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD>
<!-- developpe par Real Gagnon, Quebec Canada -->
<LINK REL="SHORTCUT ICON" HREF="http://www.maixuanviet.com/favicon.ico">
<META NAME="description"
Content="Real's JAVA JAVASCRIPT WSH and PowerBuilder How-to pages with useful code snippets">
...
Done! Happy Coding!
Related posts:
Extract links from an HTML page
Introduction to Spring MVC HandlerInterceptor
Spring Data JPA @Query
Spring Data MongoDB – Indexes, Annotations and Converters
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Java Program to Implement Solovay Strassen Primality Test Algorithm
Java Program to Implement Brent Cycle Algorithm
So sánh ArrayList và Vector trong Java
TreeSet và sử dụng Comparable, Comparator trong java
A Guide To UDP In Java
Spring Data Reactive Repositories with MongoDB
Java Program to Implement JobStateReasons API
Java Program to Implement Min Heap
Java Program to Permute All Letters of an Input String
How to Delay Code Execution in Java
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
Consuming RESTful Web Services
Collect a Java Stream to an Immutable Collection
Java Program to Solve a Matching Problem for a Given Specific Case
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Java Program to Implement Weight Balanced Tree
Java Program to Implement Adjacency Matrix
Java Concurrency Interview Questions and Answers
Java Program to Implement SimpeBindings API
Java Program to Create a Balanced Binary Tree of the Incoming Data
Java Program to Find Transitive Closure of a Graph
Netflix Archaius with Various Database Configurations
Java InputStream to String
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Introduction to Spring Data JPA
How to use the Spring FactoryBean?
Introduction to the Functional Web Framework in Spring 5