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 equals() and hashCode() Contracts
Creating a Web Application with Spring 5
Spring REST API + OAuth2 + Angular
Spring Boot Integration Testing with Embedded MongoDB
Java 8 Streams peek() API
Java Program to Implement Max-Flow Min-Cut Theorem
A Guide to LinkedHashMap in Java
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
ArrayList trong java
Interface trong Java 8 – Default method và Static method
Autoboxing và Unboxing trong Java
Java Program to Optimize Wire Length in Electrical Circuit
Spring Boot Change Context Path
Jackson – Bidirectional Relationships
Introduction to the Functional Web Framework in Spring 5
Redirect to Different Pages after Login with Spring Security
Date Time trong Java 8
Truyền giá trị và tham chiếu trong java
Java Program to Perform the Shaker Sort
Java Program to Implement a Binary Search Tree using Linked Lists
Spring Data JPA @Query
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Java Program to Implement Shoelace Algorithm
Convert char to String in Java
Java Optional as Return Type
Guide to Spring 5 WebFlux
Java Program to Implement VList
Java Program to Find the Mode in a Data Set
Java Program to Find Inverse of a Matrix
Guide to the Java ArrayList
Hướng dẫn Java Design Pattern – Chain of Responsibility
Một số nguyên tắc, định luật trong lập trình