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:
File Upload with Spring MVC
Lớp Collectors trong Java 8
New Features in Java 13
Java Program to Implement Interval Tree
Java Program to Implement Ternary Heap
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
Spring Cloud Series – The Gateway Pattern
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Java Program to Implement IdentityHashMap API
Java Program to Implement the One Time Pad Algorithm
Logout in an OAuth Secured Application
Getting Started with Custom Deserialization in Jackson
Java Program to Perform Arithmetic Operations on Numbers of Size
LinkedList trong java
Spring @Primary Annotation
Mapping Nested Values with Jackson
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Spring Boot Change Context Path
Guide to Guava Table
Spring MVC Async vs Spring WebFlux
Sorting Query Results with Spring Data
Java Program to Find a Good Feedback Vertex Set
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Spring Boot - Rest Controller Unit Test
New Features in Java 14
New Features in Java 12
Convert Hex to ASCII in Java
Guide to java.util.Formatter
Java Program to Implement Hash Tables with Linear Probing
Quick Guide to the Java StringTokenizer
Tính đóng gói (Encapsulation) trong java
Java Program to Implement Disjoint Set Data Structure