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:
Java TreeMap vs HashMap
Java Program to Implement Quick Sort with Given Complexity Constraint
Sử dụng JDBC API thực thi câu lệnh truy vấn dữ liệu
Tránh lỗi NullPointerException trong Java như thế nào?
Spring Boot - Admin Client
Java Program to Describe the Representation of Graph using Adjacency List
Programmatic Transaction Management in Spring
Set Interface trong Java
Java Program to Implement vector
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Java Program to Implement the String Search Algorithm for Short Text Sizes
Java Program to Find Nearest Neighbor Using Linear Search
Java Program to Implement Selection Sort
Hướng dẫn sử dụng String Format trong Java
Implementing a Binary Tree in Java
Introduction to Spring Method Security
A Guide to JUnit 5 Extensions
Spring Data JPA @Modifying Annotation
A Guide to the finalize Method in Java
Using Spring @ResponseStatus to Set HTTP Status Code
Phương thức forEach() trong java 8
Lấy ngày giờ hiện tại trong Java
StringBuilder vs StringBuffer in Java
Show Hibernate/JPA SQL Statements from Spring Boot
Java – Create a File
Server-Sent Events in Spring
Integer Constant Pool trong Java
Java Multi-line String
Testing in Spring Boot
Zipping Collections in Java
Overview of Spring Boot Dev Tools
Java Program to do a Depth First Search/Traversal on a graph non-recursively